Chen-Nien Tsai Wireless and Broadband Networks Laboratory Department of CSIE National Taipei University of Technology Who I AM http://www.phdcomics.com/comics/archive.php?comicid=189 2010/9/28 2 Motivation We are graduate students. Our primary goal is to graduate. Knowledge is needed. Human knowledge, domain knowledge, etc. Skills are also needed. To do research. Programming. Tools are not necessary needed, but they might make your research live easier. 2010/9/28 Notepad vs. Eclipse Folders vs. JabRef 3 Outline Research Method Procedures of Research Literature Management – JabRef Write your Thesis (or papers) – Presentation Programming skill Why do we need programming? Design Patterns Software Process Tools 2010/9/28 4 Procedures of Research Find interesting topics Read related papers to the topics Choose your research topic(s) Prepare your paper Present your paper Adopted from Chun-Hung Chen’s presentation. 2010/9/28 5 Read Related Papers to the Topics – How to Organize Print out and archive All in one Folders Gmail Why do we need to organize read papers? Our memory is limited Reference is important to the readers Adopted from Chun-Hung Chen’s presentation. 2010/9/28 6 How to Organize… We need a tool to help us manage papers Reference management software Many exist – free and costly http://en.wikipedia.org/wiki/Comparison_of_reference _management_software JabRef (http://jabref.sourceforge.net/) Zotero (http://www.zotero.org/) See [5] for an introduction. 2010/9/28 7 What is JabRef A bibliography reference manager. Cross-platform The native file format is BibTeX, the standard LaTeX bibliography format. BibTeX is a standard and long-lived format BibTeX is portable because of text format 2010/9/28 8 BibTeX Example @ARTICLE{Ke2010, author = {Ke, Kai-Wei and Tsai, Chen-Nien and Wu, Ho-Ting}, title = {Performance analysis for hierarchical resource allocation in multiplexed mobile packet data networks}, journal = {Computer Networks}, year = {2010}, volume = {54}, pages = {1707--1725}, number = {10}, abstract = {……}, address = {New York, NY, USA}, doi = {http://dx.doi.org/10.1016/j.comnet.2010.01.011}, file = {Ke2010.pdf:Ke2010.pdf:PDF}, issn = {1389-1286}, publisher = {Elsevier North-Holland, Inc.}, } 2010/9/28 9 How to use JabRef? Create a database Add new BibTeX entry manually Select type Article, Conference, Proceedings, Book, …etc Input Author, Title, Journal (Proceeding), Year, Pages Add from preformatted text ACM IEEE Add from search results IEEEXplore, ACM Portal, CiteSeer 2010/9/28 10 2010/9/28 11 Get BibTex Information from ACM Digital Library 2009/10/6 12 2010/9/28 13 See references [1], [3] and [4] for the introduction to JabRef 2010/9/28 14 Prepare Your Paper Motivation (Why choose the topics??) We want a better solution We want to apply on more strict or general scenarios Related Works We DO read a lot We DO not copy others We DO not find a better idea Methods Simulation (Analytic) Results Conclusions and Future Works Adopted from Chun-Hung Chen’s presentation. 2010/9/28 15 Write Your Thesis (or papers) Microsoft Word is good, but not that good. Cost Proprietary format Poor backward compatibility “Hey, could you please convert .docx to .doc?” Lack of typesetting abilities. Word could produces high-quality paper. Chia-Wei Tuan’s presentation [5] WORD排版藝術 [7] 2010/9/28 16 Paper Format is an Issue… http://www.phdcomics.com/comics/archive.php?comicid=178 2010/9/28 17 There are Realms other than MS and Keep the authors focus on the content instead of 2010/9/28 layout or design. Free ASCII format No compatibility issues Ideal for typesetting WYSIWYG (What You See Is What You Get) is possible 18 Source code 2010/9/28 Documents 19 Benefits of LaTeX No special programs required to edit. Format checking is almost unnecessary. Better Display. Changing format is just a few words replacement. Easy to manage bibliography. 2010/9/28 20 See references [3] , [4], and [8] for the introduction to LaTeX . 2010/9/28 21 Present Your Paper Presentation Format Microsoft PowerPoint OpenOffice Impress PDF Figures Right Resolution Louder than words Titles Sentences Page Numbers Reference {NAME}, “TITLE”, {BOOK TITLE}, {DATE} Adopted from Chun-Hung Chen’s presentation. 2010/9/28 22 Some Tips for Presentation What’s in it for you, the audiences? Ask to yourself this question constantly. Face your audience. You are talking to the audiences, not to the screen. Practice, practice, and practice. You need experience to level up. Spell it right, and pronounce it correct. If you put some words in the slides, you should know how to pronounce it. Check the dictionary if in doubt for every word. 2010/9/28 23 Summary – Part 1 Reference management software JabRef Read related papers to the topics Find interesting topics Choose your research topic(s) Present your paper Prepare your paper LaTeX Presentation skill 2010/9/28 Write your paper 24 References 1) JabRef Website, http://jabref.sourceforge.net/. 2) Zotero Website, http://www.zotero.org/. 3) Chun-Hung Chen, “Introduction to LaTeX,” available at http://netlab.csie.ntut.edu.tw/seminar/year2007/Pre sentation_IntroductionToLaTeX.zip 4) Chen-Nien Tsai, “Introduction to LaTeX and JabRef,” available at http://netlab.csie.ntut.edu.tw/seminar/year2009/CN T20091006.zip 2010/9/28 25 References 5) Chia-Wei Tuan, “Tips on Developing a Network Simulator and Writing a Paper,” available at http://netlab.csie.ntut.edu.tw/seminar/year2009/C WT20091020.ppt 6) Chun-Hung Chen, “General Research Method,” available at http://netlab.csie.ntut.edu.tw/seminar/year2008/C HC20081008.pptx 7) 侯捷,WORD排版藝術,碁峰,2004。 2010/9/28 26 References 8) Helmut Kopka and Patrick W. Daly, “Guide to LaTeX 4th Edition,” Addison-Wesley Professional, 2003. 9) Jerry Weissman, Presenting to Win: The Art of Telling Your Story, FT Press, 2003. 10) 傑瑞.魏斯曼,簡報聖經:簡報大師的致勝演說絕 招,培生,2010。 2010/9/28 27 Outline Research Method Procedures of Research Literature Management – JabRef Write your Thesis (or papers) – Presentation Programming skill Why do we need programming? Design Patterns Software Process Tools 2010/9/28 28 Why Do We Need Programming? What history tells us… 37 master theses and 1 Ph.D. dissertation by our graduates. (see thesis list) 35 of them involved programming Computer simulations System implementations. Solve mathematical equations It is rare that you can make your thesis without programming. So live with it. 2010/9/28 29 Knowledge You Need to Sharpen Your Programming Skill Basic: Programming Languages Java, C/C++, C#, VB, Perl, Ruby, Ada, Smalltalk, Lisp, Fortran, Pascal, and more. Semantic and Syntax Object-Oriented Programming (vs. Procedural Programming) Encapsulation Inheritance Polymorphism 2010/9/28 30 Knowledge You Need to Sharpen Your Programming Skill Advanced: Design Patterns general reusable solutions to a commonly occurring problem in software design Object-Oriented Design Principles Single Responsibility Principle (SRP) Open Closed Principle (OCP) Liskov Substitution Principle (LSP) Dependency Inversion Principle (DIP) Interface Segregation Principle (ISP) 2010/9/28 might be too academic, but can help you understand design patterns 31 Something About Patterns What is a pattern? a regular and intelligible form or sequence discernible in the way in which something happens or is done an excellent example for others to follow http://oxforddictionaries.com/view/entry/m_en_gb0610840 We all see patterns in our everyday life. Architecture Movies Commercial 2010/9/28 32 Some Examples of Patterns 第四台廣告中的 Pattern: 原價 ...,現在購買只要 ...,還送你一組 ...,請馬上來 電 ...,如忙線中請稍後再撥。 電影中的 Pattern: 壞人追殺好人時,好人躲進車子,卻發現車子發不動, 引擎嘎嘎作響,一面努力地繼續發動,一面念念有詞 「Come on, Come one」。 壞人追殺好人時,好人衝進電梯,死命地押著 close 按 鈕,脫口而出「Come on, Come one」。 http://www.oreilly.com.tw/column_sleepless.php?id=j008 2010/9/28 33 What is a Design Pattern? Recall that when we were in the high school and solving mathematic problems. After we’ve solved tons of problems, we found a pattern that can be applied to solve similar problems. Programming experts designed tons of systems. They also found a pattern that can be adopted to solve similar design problems. 2010/9/28 34 What is a Design Pattern? A design pattern is a general reusable solution to a commonly occurring problem in software design. Pattern Name Solution Problem Consequences Design Pattern 2010/9/28 35 Applying Design Patterns Singleton Pattern Name: Singleton Problem: Ensure a class only has one instance, and provide a global point of access to it. Solution and Consequences: Page 127 – 134 in GoF. A simple pattern that is easy to understand. The following example is adopted from Chia-Wei Tuan’s presentation. 2010/9/28 36 Event In simulation, the operation of a system can be represented as a chronological sequence of events. An event is described by the time at which it occurs and a type, indicating the code that will be used to simulate that event. Adopted from Chia-Wei Tuan’s presentation. 2010/9/28 37 Events and EventCollection 0..* Event EventCollection Event1 2010/9/28 Event2 Event3 Adopted from Chia-Wei Tuan’s presentation. 38 EventCollection EventCollection is a singleton pattern. Adopted from Chia-Wei Tuan’s presentation. 2010/9/28 39 Recommended Reading Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional, 1995. (Gang of Four, GoF) Elisabeth Freeman, Eric Freeman, Bert Bates, and Kathy Sierra, Head First Design Patterns, O'Reilly Media, 2004. 程杰,大話設計模式,悅知文化,2009。 2010/9/28 40 Knowledge You Need to Sharpen Your Programming Skill Supplementary Materials: Software Development Process Agile Software Development Test-Driven Development (TDD) Unit Testing JUnit and CppUnit Writing test cases for your program is highly recommended. 2010/9/28 41 Test-Driven Development You should pay more attention on these two steps 2010/9/28 42 Knowledge You Need to Sharpen Your Programming Skill Supplementary Materials: Unit Testing JUnit and CppUnit Writing test cases for your program is highly recommended. 2010/9/28 43 Why Unit Test? Ensure our program is functional and is working as intended. Increase productivity. Easy to detect bugs. Improve implementation Unit tests are the first-rate client of the code they test. Give us confidence to refactor and clean up code. Where's your guts from to change the functional code? 2010/9/28 44 Then Why Clean Up Code? To improve code quality. 2010/9/28 45 The Total Cost of Owning a Mess If you ever write a program which contains thousands of lines of codes, you will know the feeling of owning a mess. 2010/9/28 46 慢慢來,比較快。 2010/9/28 47 Recommended Reading Steve Freeman and Nat Pryce, Growing Object-Oriented Software, Guided by Tests, Addison-Wesley Professional, 2009. Vincent Massol and Ted Husted, JUnit in Action, Manning Publications, 2003. Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008. 2010/9/28 48 Tools Development Environment Eclipse Visual Studio (Re)Version Control System Concurrent Versions System (CVS) Subversion Software Configuration Management Perforce 2010/9/28 49 Control Your Source Code This is a good practice to make all your source code controlled. Our program is continually growing… The whole program might crash after added an new feature. Refactoring and cleaning up code. 2010/9/28 50 Folder History 2010/9/28 51 File History 2010/9/28 52 Why Bother? Backup your code. Roll back to previous versions if necessary. To record what you have done. Synchronization. Teamwork Could make your code clearer. No journal comments or commented-out code. 2010/9/28 53 Journal Comments Source control system will do this for us. 2010/9/28 54 Commented-out Code This code is from apache With the source control system, we can just delete the code. 2010/9/28 55 Recommended Reading Laura Wingerd, Practical Perforce, O'Reilly Media, 2005. C. Michael Pilato, Ben Collins-Sussman, and Brian W. Fitzpatrick, Version Control with Subversion 2nd edition, O'Reilly Media, 2008. 2010/9/28 56 References Chen-Nien Tsai, “Version Control with Subversion,” available at http://netlab.csie.ntut.edu.tw/seminar/year2005/CNT _20060118.ppt Dedi Rahmawan Putra, “Shared Document Management using TortoiseSVN,” available at http://netlab.csie.ntut.edu.tw/seminar/year2008/Dedi 20081120.pptx Perforce Website, http://www.perforce.com/ 2010/9/28 57 References Eclipse Website, http://www.eclipse.org/ Visual Studio Express, http://www.microsoft.com/express/ 2010/9/28 58 Summary – Part 2 You might not remember all of this presentation. Here are the highlights We need programming skill to graduate (or to survive). Try to be familiar with modern programming languages. Learn more about design patterns if you can. Write test cases for your program. Make your code clean. Use the tools that can improve your productivity. 2010/9/28 59 2010/9/28 60 2010/9/28 61 Thesis List (1/4) Name Thesis Topic Programming Involved 林志鴻 The Software Design of Mobile Positioning and Field Measuring Integrated System Yes 曾慶隆 The Design of QoS Provisioning Mechanisms in WDM Ring Networks Yes 簡睿毅 Dynamic Bandwidth Allocation Mechanisms for Multimedia Services on EPON Yes 林澤賢 A WDM Passive Optical Network Architecture for Multicasting Services Yes 李昆達 The Study and Implementation of Mobile Internet Phone Yes 楊旻樺 The Study of the QoS Provisioning Mechanisms in IEEE 802.11e Wireless LANs Yes 劉欣憲 The Research of the QoS Provisioning System in IEEE 802.16 Yes 陳志昇 The Research of Routing Mechanisms in Vehicular Ad Hoc Network Yes 莊富元 The Study of the Performance in IEEE 802.11e EDCA Yes 陳思翰 A Study of the Bandwidth Management Architecture over IEEE 802.16 WiMAX Yes 2010/9/28 62 Thesis List (2/4) Name Thesis Topic Programming Involved 楊啟鋒 The Design of Mobility WiMAX Simulation Platform and Its Performance Evaluation Yes 曾致皓 The Design and Implementation of Video Monitoring and Recording System for H.323-based Internet Phone Yes 郭澤洋 The Designs of AWG Based WDM/TDM PON Architecture Yes 劉政德 The Study of Multicast Mechanisms in the PSC Based Optical Networks Yes 嚴雷 The Design of the Power Saving Mechanisms in IEEE 802.16e Networks Yes 孫易緯 The Designs of QoS Mechanisms in Mobile WiMAX Network Systems with Handover Procedures Yes 段家瑋 The Analysis and Design of the Optical Packet Switch and Its Application Yes 尹培鑫 The Implementation of Network and Transport Layer Modules for a DVB-H Reception System Yes 陳俊宏 The Design and Evaluation of Mobility Models in Mobile Ad Hoc Networks Yes 2010/9/28 63 Thesis List (3/4) Name Thesis Topic Programming Involved 陳養正 The Development of Embedded Linux System for Wireless Applications No 江豐信 The Development of Mobile Data Processing System with GPS and GPRS Yes 蔡鎮年 High Utilization Resource Allocation Strategy and Performance Evaluation for GPRS Yes 林文祺 The Origin and Performance Impact of Self-Semilar Traffic for Wireless Local Area Networks Yes 許家豪 Adaptive Resource Management with Dynamic Reallocation for Layered Encoded Multimedia on Wireless Mobile Communication Network Yes 蔡憲邦 Design of Efficient and Secure Multiple Wireless Mesh Network No 謝銘嘉 A Dynamic Uplink/Downlink BWA and Packet Scheduling Mechanism in WiMAX Yes 馮文志 The Study and Implementation of Adaptive Bandwidth, Encoding Adjustment, and Security Mechanisms for Wireless Internet Phone Yes 吳宜軒 The Research of Two-Dimensional Positioning Algorithm for RFID Systems No 馬兆緯 JPANDDR-Implementation of a JAVA based tool for Protocol Analysis, Network Diagnose, and Data Reassembly Yes 2010/9/28 64 Thesis List (4/4) Name Thesis Topic Programming Involved 黃威穎 The Design and Implementation of Audio Monitoring and Recording System for H.323-based Internet Phone Yes 葉昭松 The Research and Implementation of WiMAX Convergence Sublayer System over an Embedded System Yes 陳燕仁 The Research and Implementation of WiMAX Security Subsystem Over an Embedded System Yes 楊啟彣 Design and Study of an IPTV Multicating System over IEEE 802.16-based Wireless MAN Yes Network Management and Traffic Analysis for WIMAX Yes 蔡家瑞 Intelligent Monitoring and Recording System Implementation for Customized H.323-based Internet Phone Yes 龔哲幀 Design of Indoor Positioning and Tracking Algorithm and System Based on Active RFID Technology Yes 陳勇銘 An Intelligent Packet Classifier for Communication Networks with QoS Support Yes 王謙志 The Implementation of Real-Time Recording, Monitoring, and Analyzing System for SIP-based Internet Phone Yes Dedi 2010/9/28 65 JabRef Screenshot 2010/9/28 66 Why Do We Need Programming? Practical Perspective We have a system/software need to be implemented. Open-Source Projects. We want to evaluate the performance of a proposed algorithm/mechanism by computer simulations. The most common case. OPNET, QualNet, ns-2, OMNeT++ We want to solve a mathematical equations we derived for a specific problem. Sometimes, the results of these equations are compared with simulation results. 2010/9/28 67 Programming Languages 多學一種語言就是為自己多開一扇窗。 Not only for human languages, but also for other languages. Imagine that you can… watch a movie without reading the subtitles. Foreign languages render the content of a web page without browsers. get insight into computer networks by simulations. 2010/9/28 68 Render the content of a web page HTML, CSS, XML, Java Script, VB Script, etc. 2010/9/28 69 Get Insight Into Computer Networks C/C++, C#, Java, etc. 2010/9/28 70 Decipher the Matrix An unknown computer language. Maybe you have to grow up in Zion? 2010/9/28 71 “Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.” – Christopher Alexander 2010/9/28 72 How Do I Write Clean Code? It’s no good trying to write clean code if you don’t know what it means for code to be clean! Being able to recognize clean code from dirty code does not mean that we know how to write clean code! Read the recommended books to find out more. 2010/9/28 73 Choose a IDE Integrated development environment. Eclipse is a powerful IDE that can be used by various developers. Java, C/C++, PHP, JavaScript. Visual Studio is also a powerful IDE, Price might be the concern. Free but limited editions exist. Windows platforms only. Notepad++ This is not actually an IDE but a text editor. 2010/9/28 74