logging in or signing up introduction to programming Margherita Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 1585 Category: Education License: All Rights Reserved Like it (1) Dislike it (0) Added: January 22, 2008 This Presentation is Public Favorites: 2 Presentation Description No description available. Comments Posting comment... By: yznotoum (4 month(s) ago) good notes Saving..... Post Reply Close Saving..... Edit Comment Close By: bkt777 (17 month(s) ago) Very nice presentation. I appreciate the importance of team work mentioned and wonderful inspirational quotes explaining the importance hardwork. I am not a progammer but may I request to download this presentation for my son (Class-XI). Thanking in anticipation. WARM REGARDS Saving..... Post Reply Close Saving..... Edit Comment Close By: bkt777 (17 month(s) ago) Very nice presentation. I appreciate the importance of team work mentioned and wonderful inspirational quotes explaining the importance hardwork. I am not a progammer but may I request to download this presentation for my son (Class-XI). Thanking in anticipation. WARM REGARDS Saving..... Post Reply Close Saving..... Edit Comment Close Premium member Presentation Transcript Introduction to Programming: Introduction to Programming Zhang Miao Ph.D Candidate CNPT Lab, CS, Tsinghua University zm@csnet1.cs.tsinghua.edu.cn http://netlab.cs.tsinghua.edu.cn/~zmIntroduction: Introduction NO details for specific language NO details for specific method Try to provide some ideas and guidelines On software development On project managementOutline: Outline How to do programming How to do project Other related topics Introduction to CNPT LabWhat is a software?: What is a software? Some wrong ideas Only code Only a running system Program = language? (VC, Delphi, VB, …)What is a software? (cont.): What is a software? (cont.) Not only code Design: also the product of a project Document: for both developer and user Code: run, read and maintain Service …… Bill Gates, “make this world better with great software”一流代码的特性: 一流代码的特性 鲁棒 - Solid and Robust Code Basic Requirement, 正确性 简洁 - Maintainable and Simple Code 简短 - Small Code For maintenance 高效 - Fast Code Performance consideration 共享 - Re-usable Code 可测试 - Testable Code 可移植 - Portable Code (“写好代码的10个秘诀”-微软,林斌)Write Clean Code: Write Clean Code The code is not written for yourself Write clean code To work with other people To share with other people Responsible to your code It’s my baby!! Work hard, and work smartly: Work hard, and work smartly Think more, code less Coding only occupies less than 1/3 time Divide and conquer Data oriented (NOT function oriented) To think the data structure first! (Richard Stallman) Programming language does not matter muchWriting Comment: Writing Comment Good comment is necessary for good code Comment is good document Easy to synchronize with the code Some critical comments Function interface description Description of complex functions Description of important variables Natural to write comment when codingCode Layout: Code Layout Not only an issue of format Indent: to show the logical structure Naming variable To show the meaning of the variable Avoid too long name Author, copyright and date The ownership, and responsibilityError Detection: Error Detection Assume error is possible for EVERY function invoked assert() and error processing Condition in the assert() is forbidden Pass a NULL pointer to a function Condition in the error processing is possible Get a NULL pointer from malloc() The code in the assert() is not present if not in debug modeTry to write less code: Try to write less code No need to write too much code Combine code into function when possible Easy to maintain and optimize Search for system functions first E.g., qsort() Many free codes are available At least, it can be a reference designStyle Guidelines: Style Guidelines Small function and small file Much higher error probability in large function Use macro to define const Clear meaning Avoid multiple modification Function declaration in header file Let the compiler work for you!Style Guidelines(cont.): Style Guidelines(cont.) Localize the variable and function as much as possible Use keyword “static” in C Object Oriented (C++) vs. Object Based (C ): inheritance, polymorphism Viewpoint: data, & operationOutline: Outline Introduction to programming How to do project Other related topics Introduction to CNPT LabWhole Process: Whole Process Investigation Requirement analysis Design & documentation Coding Testing Project summaryHave a plan: Have a plan Identify the goal first The vision should be shared by all the people! Make a clear and feasible plan Often behind the plan is dangerous Have several big milestones Have many little check points Risks Perfect plan is nearly impossible Good plan needs experience and more consideration Requirement Analysis: Requirement Analysis The resource is limited Consider the resource People, fund, and time The mythical man-month No assumption for your user, do investigation and ask them The requirements have different priority More important to know what we do not needDesign: Design Design before coding As detail as possible Make a modification in the code is VERY hard Doing review, if possible Find a defect as early as possible The modification cost increases aggressively Hierarchical design Divide and conquerTesting: Testing Very important for large and critical project Person MS: 1:1 NASA: 10:1 White box testing and black box testing Be responsible to your own module! Always no enough test cases Can only find error, but can’t prove rightProject Tracing: Project Tracing Collecting data during the project Some rules exist in the development It is a long time process Includes Modification history Bug report All documents …..Teamwork: Teamwork It is what we lack most! NO single hero for a large project Microsoft Windows 2000 5000 people work together 50,000,000 lines of code An open environment is preferred Share good ideas with other peopleCommunication: Communication Communication is everywhere > 50% effort is used in communication The ways of communication: Document Code Talk BBS …. Always to try to improve communicationConventions: Conventions Better to have conventions in a large project Try to decrease communication cost The “Babel Tower” in the Bible Examples Document conventions Coding conventions Debugging conventions ……Document: Document Document is VERY VERY important Remind yourself Work together with other people Consider for maintainer Document is NOT restrict to ONE style To make other people understand! To communicate To make yourself understand furtherDocument (cont.): Document (cont.) What should be documented? Requirement analysis Project conventions Design Discussion memos Project Plan … (everything) Share the document Everyone can reach it!Using More Tools: Using More Tools The difference between man and ape Tools available Design, Document, Code control, Testing Tools we use now CVS: Much easier to do code synchronization BugTracerPerformance Optimization: Performance Optimization Identify the bottleneck point Avoid assumption, try first! Priority Architecture The specific algorithm The specific lines of code the compiler is more and more smart Outline: Outline Introduction to programming How to do project Other related topics Introduction to CNPT LabThe Pursuit of Perfection: The Pursuit of Perfection No end for pursuing the perfection Continuously study and practice Books and documents At least one book every year Think more Don’t avoid doing those tedious things Be patient! No free meal! Rome is not built in one day!All Aspects of Knowledge: All Aspects of Knowledge Only know how to program is not enough Knowledge of specific area Economic Management ……Happy Work: Happy Work Don’t work TOO hard Keep your health first! No more time, but more efficiency Collaboration is a joy Promote yourself to high-level programmer Remember you are a student of CS! Utilize the knowledge you have learned!A Bright Future: A Bright Future China: the most promising market Many companies transfer R&D to China More and more knowledge is open Internet: a good libraryOutline: Outline Introduction to programming How to do project Other related topics Introduction to CNPT LabBrief Introduction: Brief Introduction Leader: Prof. Wu Jianping Focus now IPv4 / IPv6 dual stack router (863 Project) High Performance Router Tester (863 Project) Protocol Testing Research on many topics Optimizing the process of system developmentWhat can you learn here?: What can you learn here? Knowledge on networking Protocol, network architecture System architecture, OS Software developing process Method of doing research Teamwork Organizing a projectSummary: Summary “立场,观点,方法” Goal Benefit other people Be a useful thing: what is the requirement? Pursuit of perfection Passion It’s my baby! China will be a great country!Summary(cont.): Summary(cont.) Teamwork No single hero in a large project Enjoy the happiness of cooperation Be professional: focus on work, not people Think less about your own interest Method Work hard and work smartly Keep studying and improving Pay attention to key factorsFor more information: For more information For software development, visit http://netlab.cs.tsinghua.edu.cn/~zm/se.html For learning network, visit http://netlab.cs.tsinghua.edu.cn/~zm/booklist.html Feel free to send Email: zm@csnet1.cs.tsinghua.edu.cn Or come here to have a talk, 东主楼9区402室Slide40: Thank you! You do not have the permission to view this presentation. In order to view it, please contact the author of the presentation.
introduction to programming Margherita Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 1585 Category: Education License: All Rights Reserved Like it (1) Dislike it (0) Added: January 22, 2008 This Presentation is Public Favorites: 2 Presentation Description No description available. Comments Posting comment... By: yznotoum (4 month(s) ago) good notes Saving..... Post Reply Close Saving..... Edit Comment Close By: bkt777 (17 month(s) ago) Very nice presentation. I appreciate the importance of team work mentioned and wonderful inspirational quotes explaining the importance hardwork. I am not a progammer but may I request to download this presentation for my son (Class-XI). Thanking in anticipation. WARM REGARDS Saving..... Post Reply Close Saving..... Edit Comment Close By: bkt777 (17 month(s) ago) Very nice presentation. I appreciate the importance of team work mentioned and wonderful inspirational quotes explaining the importance hardwork. I am not a progammer but may I request to download this presentation for my son (Class-XI). Thanking in anticipation. WARM REGARDS Saving..... Post Reply Close Saving..... Edit Comment Close Premium member Presentation Transcript Introduction to Programming: Introduction to Programming Zhang Miao Ph.D Candidate CNPT Lab, CS, Tsinghua University zm@csnet1.cs.tsinghua.edu.cn http://netlab.cs.tsinghua.edu.cn/~zmIntroduction: Introduction NO details for specific language NO details for specific method Try to provide some ideas and guidelines On software development On project managementOutline: Outline How to do programming How to do project Other related topics Introduction to CNPT LabWhat is a software?: What is a software? Some wrong ideas Only code Only a running system Program = language? (VC, Delphi, VB, …)What is a software? (cont.): What is a software? (cont.) Not only code Design: also the product of a project Document: for both developer and user Code: run, read and maintain Service …… Bill Gates, “make this world better with great software”一流代码的特性: 一流代码的特性 鲁棒 - Solid and Robust Code Basic Requirement, 正确性 简洁 - Maintainable and Simple Code 简短 - Small Code For maintenance 高效 - Fast Code Performance consideration 共享 - Re-usable Code 可测试 - Testable Code 可移植 - Portable Code (“写好代码的10个秘诀”-微软,林斌)Write Clean Code: Write Clean Code The code is not written for yourself Write clean code To work with other people To share with other people Responsible to your code It’s my baby!! Work hard, and work smartly: Work hard, and work smartly Think more, code less Coding only occupies less than 1/3 time Divide and conquer Data oriented (NOT function oriented) To think the data structure first! (Richard Stallman) Programming language does not matter muchWriting Comment: Writing Comment Good comment is necessary for good code Comment is good document Easy to synchronize with the code Some critical comments Function interface description Description of complex functions Description of important variables Natural to write comment when codingCode Layout: Code Layout Not only an issue of format Indent: to show the logical structure Naming variable To show the meaning of the variable Avoid too long name Author, copyright and date The ownership, and responsibilityError Detection: Error Detection Assume error is possible for EVERY function invoked assert() and error processing Condition in the assert() is forbidden Pass a NULL pointer to a function Condition in the error processing is possible Get a NULL pointer from malloc() The code in the assert() is not present if not in debug modeTry to write less code: Try to write less code No need to write too much code Combine code into function when possible Easy to maintain and optimize Search for system functions first E.g., qsort() Many free codes are available At least, it can be a reference designStyle Guidelines: Style Guidelines Small function and small file Much higher error probability in large function Use macro to define const Clear meaning Avoid multiple modification Function declaration in header file Let the compiler work for you!Style Guidelines(cont.): Style Guidelines(cont.) Localize the variable and function as much as possible Use keyword “static” in C Object Oriented (C++) vs. Object Based (C ): inheritance, polymorphism Viewpoint: data, & operationOutline: Outline Introduction to programming How to do project Other related topics Introduction to CNPT LabWhole Process: Whole Process Investigation Requirement analysis Design & documentation Coding Testing Project summaryHave a plan: Have a plan Identify the goal first The vision should be shared by all the people! Make a clear and feasible plan Often behind the plan is dangerous Have several big milestones Have many little check points Risks Perfect plan is nearly impossible Good plan needs experience and more consideration Requirement Analysis: Requirement Analysis The resource is limited Consider the resource People, fund, and time The mythical man-month No assumption for your user, do investigation and ask them The requirements have different priority More important to know what we do not needDesign: Design Design before coding As detail as possible Make a modification in the code is VERY hard Doing review, if possible Find a defect as early as possible The modification cost increases aggressively Hierarchical design Divide and conquerTesting: Testing Very important for large and critical project Person MS: 1:1 NASA: 10:1 White box testing and black box testing Be responsible to your own module! Always no enough test cases Can only find error, but can’t prove rightProject Tracing: Project Tracing Collecting data during the project Some rules exist in the development It is a long time process Includes Modification history Bug report All documents …..Teamwork: Teamwork It is what we lack most! NO single hero for a large project Microsoft Windows 2000 5000 people work together 50,000,000 lines of code An open environment is preferred Share good ideas with other peopleCommunication: Communication Communication is everywhere > 50% effort is used in communication The ways of communication: Document Code Talk BBS …. Always to try to improve communicationConventions: Conventions Better to have conventions in a large project Try to decrease communication cost The “Babel Tower” in the Bible Examples Document conventions Coding conventions Debugging conventions ……Document: Document Document is VERY VERY important Remind yourself Work together with other people Consider for maintainer Document is NOT restrict to ONE style To make other people understand! To communicate To make yourself understand furtherDocument (cont.): Document (cont.) What should be documented? Requirement analysis Project conventions Design Discussion memos Project Plan … (everything) Share the document Everyone can reach it!Using More Tools: Using More Tools The difference between man and ape Tools available Design, Document, Code control, Testing Tools we use now CVS: Much easier to do code synchronization BugTracerPerformance Optimization: Performance Optimization Identify the bottleneck point Avoid assumption, try first! Priority Architecture The specific algorithm The specific lines of code the compiler is more and more smart Outline: Outline Introduction to programming How to do project Other related topics Introduction to CNPT LabThe Pursuit of Perfection: The Pursuit of Perfection No end for pursuing the perfection Continuously study and practice Books and documents At least one book every year Think more Don’t avoid doing those tedious things Be patient! No free meal! Rome is not built in one day!All Aspects of Knowledge: All Aspects of Knowledge Only know how to program is not enough Knowledge of specific area Economic Management ……Happy Work: Happy Work Don’t work TOO hard Keep your health first! No more time, but more efficiency Collaboration is a joy Promote yourself to high-level programmer Remember you are a student of CS! Utilize the knowledge you have learned!A Bright Future: A Bright Future China: the most promising market Many companies transfer R&D to China More and more knowledge is open Internet: a good libraryOutline: Outline Introduction to programming How to do project Other related topics Introduction to CNPT LabBrief Introduction: Brief Introduction Leader: Prof. Wu Jianping Focus now IPv4 / IPv6 dual stack router (863 Project) High Performance Router Tester (863 Project) Protocol Testing Research on many topics Optimizing the process of system developmentWhat can you learn here?: What can you learn here? Knowledge on networking Protocol, network architecture System architecture, OS Software developing process Method of doing research Teamwork Organizing a projectSummary: Summary “立场,观点,方法” Goal Benefit other people Be a useful thing: what is the requirement? Pursuit of perfection Passion It’s my baby! China will be a great country!Summary(cont.): Summary(cont.) Teamwork No single hero in a large project Enjoy the happiness of cooperation Be professional: focus on work, not people Think less about your own interest Method Work hard and work smartly Keep studying and improving Pay attention to key factorsFor more information: For more information For software development, visit http://netlab.cs.tsinghua.edu.cn/~zm/se.html For learning network, visit http://netlab.cs.tsinghua.edu.cn/~zm/booklist.html Feel free to send Email: zm@csnet1.cs.tsinghua.edu.cn Or come here to have a talk, 东主楼9区402室Slide40: Thank you!