Introducing N241

347 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
347
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introducing N241

  1. 1. Introducing N241
  2. 2. Goals <ul><li>By the end of today’s lecture, you should … </li></ul><ul><li>… understand Computer Science as the study of algorithms . </li></ul><ul><li>… understand some of the tools we’ll be using in the semester </li></ul><ul><li>… have created your Pegasus account. </li></ul>
  3. 3. Computer use is Pervasive <ul><li>Banking </li></ul><ul><li>Air Traffic </li></ul><ul><li>Space Travel </li></ul><ul><li>Commerce </li></ul><ul><li>Medicine </li></ul><ul><li>Public Safety </li></ul><ul><li>Education </li></ul><ul><li>Automotive </li></ul><ul><li>Military </li></ul><ul><li>GPS </li></ul><ul><li>Entertainment </li></ul><ul><li>Finance </li></ul><ul><li>Telecommunications </li></ul><ul><li>What else? </li></ul>
  4. 4. What is Computer Science? <ul><li>NOT about coding or hardware or software! </li></ul><ul><li>Computer Science is about PROBLEM SOLVING </li></ul><ul><li>Computer Science is about DEVELOPING ALGORITHMS to solve complex problems </li></ul><ul><li>Computers are merely tools for solving problems! </li></ul>
  5. 5. Algorithms <ul><li>Well-developed, organized approaches to solving complex problems </li></ul><ul><li>Test of a good algorithm: </li></ul><ul><ul><li>Does the algorithm solve the stated problem? </li></ul></ul><ul><ul><li>Is the algorithm well-defined? </li></ul></ul><ul><ul><li>Does the algorithm produce an output? </li></ul></ul><ul><ul><li>Does the algorithm end in a reasonable length of time? </li></ul></ul>
  6. 6. Developing an Algorithm <ul><li>Identify the Inputs </li></ul><ul><ul><li>What data do I need? </li></ul></ul><ul><ul><li>How will I get the data? </li></ul></ul><ul><ul><li>In what format will the data be? </li></ul></ul><ul><li>Identify the Processes: </li></ul><ul><ul><li>How can I manipulate data to produce meaningful results? </li></ul></ul><ul><li>Identify Outputs: </li></ul><ul><ul><li>What outputs do I need to return to the user? </li></ul></ul><ul><ul><li>What format should the outputs take? </li></ul></ul>
  7. 7. Developing an Algorithm <ul><li>Develop a HIPO chart </li></ul>PROBLEM INPUT PROCESSES OUTPUT MODULE MODULE MODULE MODULE MODULE MODULE
  8. 8. Developing an Algorithm <ul><li>Identify relevant modules </li></ul><ul><ul><li>How can I break larger problems into smaller, more manageable pieces? </li></ul></ul><ul><ul><li>What inputs do the modules need? </li></ul></ul><ul><ul><li>What processes need to happen in the modules? </li></ul></ul><ul><ul><li>What outputs are produced by the modules? </li></ul></ul>
  9. 9. Programs <ul><li>Sets of instructions that get the computer to do something </li></ul><ul><li>Instructions are translated, eventually, to machine language using an interpreter or a compiler </li></ul><ul><li>Programs may be a few lines or millions of lines of code </li></ul>
  10. 10. Programming Tasks <ul><li>All computer programs are written so they can take data, manipulate and then produce a result. </li></ul><ul><li>This process uses three distinct tasks: </li></ul><ul><ul><li>INPUT – getting data from an external source (the user, a database, a file, etc.) </li></ul></ul><ul><ul><li>PROCESSING – actual manipulation of the data </li></ul></ul><ul><ul><li>OUTPUT – reporting the results of data manipulation back (using the monitor, writing information to a database, etc.) </li></ul></ul>
  11. 11. The Programming Development Cycle <ul><li>Done after identifying inputs, processing & outputs </li></ul><ul><li>Steps </li></ul><ul><ul><li>Analyze the problem </li></ul></ul><ul><ul><li>Plan a solution to the problem (algorithm) </li></ul></ul><ul><ul><li>Design the user interface </li></ul></ul>
  12. 12. The Programming Development Cycle <ul><li>Steps (continued) </li></ul><ul><ul><li>Code the solution </li></ul></ul><ul><ul><li>Test and debug the solution </li></ul></ul><ul><ul><li>Complete program documentation </li></ul></ul><ul><ul><li>Begin to plan for next release (start Cycle again) </li></ul></ul>
  13. 13. 1. Analyze the Problem <ul><li>Questions to ask: </li></ul><ul><ul><li>Who is my intended audience? </li></ul></ul><ul><ul><li>What SPECIFIC outcomes does my audience expect? </li></ul></ul><ul><ul><li>What business rules is my audience expecting to have incorporated into the solution? </li></ul></ul><ul><ul><li>What is the SCOPE of the problem? </li></ul></ul>
  14. 14. 2. Plan a Solution (Algorithm) <ul><li>What types of programming structures are needed? </li></ul><ul><ul><li>Sequential structures </li></ul></ul><ul><ul><li>Conditional structures </li></ul></ul><ul><ul><li>Looping structures </li></ul></ul><ul><li>What data structures are needed? </li></ul><ul><ul><li>Variables </li></ul></ul><ul><ul><li>Lists </li></ul></ul><ul><ul><li>Arrays </li></ul></ul>
  15. 15. 3. Design the User Interface <ul><li>AKA – The “UI” </li></ul><ul><li>Is the UI “learnable”? </li></ul><ul><li>Is it simple? (Limit user choices) </li></ul><ul><li>Does the UI promote error-proof use? </li></ul><ul><li>Is the layout of the UI arranged in a fashion conducive to the user’s culture and expectations? </li></ul>
  16. 16. 4. Code the Solution <ul><li>Develop an actual program from an algorithm </li></ul><ul><li>Should be the “easiest” part of the process – all the work should already be done! </li></ul>
  17. 17. 5. Test & Debug the Solution <ul><li>Alpha Testing – Internal testing done with expected client data (NOT LIVE DATA) </li></ul><ul><li>Beta Testing – Testing done at the client site with their data (USUALLY LIVE DATA) </li></ul><ul><li>Try to predict common user errors </li></ul><ul><li>Test subjects should be Power Users, Normal Users and Neophytes </li></ul>
  18. 18. 6. Complete Documentation <ul><li>User Documentation: </li></ul><ul><ul><li>User Manual </li></ul></ul><ul><ul><li>Technical Documentation (for System Administrators) </li></ul></ul><ul><li>Internal Documentation: </li></ul><ul><ul><li>Documentation comments </li></ul></ul><ul><ul><li>Code comments </li></ul></ul><ul><ul><li>Procedural comments </li></ul></ul><ul><ul><li>Should be done while coding! </li></ul></ul>
  19. 19. 7. Plan Next Release <ul><li>What bugs need to be fixed? </li></ul><ul><ul><li>Are bugs “critical”? (Need to be fixed in a minor release ) </li></ul></ul><ul><ul><li>If bugs are not critical, they can be fixed in next major release </li></ul></ul><ul><li>What product enhancements do the users want for the next release? </li></ul>
  20. 20. Tools <ul><li>The Pegasus Server </li></ul><ul><ul><li>Address: pegasus.cs.iupui.edu </li></ul></ul><ul><ul><li>Uses Unix (more on that later …) </li></ul></ul><ul><li>Suggested Text Editors: </li></ul><ul><ul><li>Notepad++ for Windows </li></ul></ul><ul><ul><li>syn Text Editor for Windows </li></ul></ul><ul><ul><li>jEdit for Macintosh/Windows/Linux </li></ul></ul><ul><ul><li>Emacs/xEmacs for Macintosh/Windows/Linux </li></ul></ul>
  21. 21. Tools <ul><li>Graphics Packages </li></ul><ul><ul><li>The Gimp (It’s FREE – http://www.gimp.org ) </li></ul></ul><ul><ul><li>Paint Shop Pro </li></ul></ul><ul><ul><li>Fireworks </li></ul></ul><ul><ul><li>PhotoShop </li></ul></ul>
  22. 22. Tools <ul><li>STRONGLY Suggested Browser: </li></ul><ul><ul><li>Mozilla Firefox ( http://www.getfirefox.com ) </li></ul></ul><ul><ul><li>Firefox Extensions: </li></ul></ul><ul><ul><ul><li>DOM Inspector </li></ul></ul></ul><ul><ul><ul><li>HTML Validator </li></ul></ul></ul><ul><ul><ul><li>Colorzilla </li></ul></ul></ul><ul><ul><ul><li>Web Developer </li></ul></ul></ul>
  23. 23. Questions?
  24. 24. Resources <ul><li>Bob Molnar, N201 Lecture Notes </li></ul><ul><li>Visual Basic.NET Primer Plus by Jack Purdum (Sams Publishing, 2003) </li></ul><ul><li>An Introduction to Programming Using Visual Basic.NET Fifth Edition by David I. Schneider (Prentice Hall, 2003) </li></ul><ul><li>C: How to Program by Deitel & Deitel (Prentice Hall, 2004) </li></ul>

×