1 / 29

What is Computer Science?

What is Computer Science?.

mfielder
Download Presentation

What is Computer Science?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. What is Computer Science? • The systematic study of computing systems and computation. The body of knowledge resulting from this discipline contains theories for understanding computing systems and methods; design methodology, algorithms, and tools; methods for the testing of concepts; methods of analysis and verification; and knowledge representation and implementation. • Source: http://www.hpcc.gov/pubs/blue94/section.6.html • Closer to Mathematics than other sciences • Math is declarative • CS is imperative CS1 - CS and Software Development

  2. Euclid • Was a mathematician • Developed a systematic method for computing the GCD • Did not consider how his method could be implemented • Did not reason about the properties that an implementation might exhibit CS1 - CS and Software Development

  3. Augusta Ada Byron • Was a Computer Scientist • Studied methods of computing (Babbage’s analytical engine) • Reasoned about the implementations and their properties CS1 - CS and Software Development

  4. Areas of Computer Science • Some areas in computer science include: • Fundamental algorithm concepts • Computer organization (“von Neumann”) • Programming • Data structures and abstraction • Limits of computability • Operating systems and security • Distributed computing and networks • Models in artificial intelligence • File and database systems • Parallel computation • Note that programming is only one of these topics areas. CS1 - CS and Software Development

  5. Approaches to Teaching CS • Breadth first • Cover several topic areas • Not covered in depth • Depth first • Concentrate on one topic area • Where do CS1/2/3 fall? • Depth first • Study of programming CS1 - CS and Software Development

  6. Computer Engineering • Focus on the hardware • Not just assembly of pre-made components • Machine level, bit-head sort of work • Programming is done in C, or assembly language. • Might write a device driver or small OS • You “talk” to the hardware CS1 - CS and Software Development

  7. The Other Three • Think about a car… • There are people who design and build cars • There are people who maintain cars and keep them running smoothly • There are people who use cars to solve problems • Delivery Company, Race Car Driver, you … CS1 - CS and Software Development

  8. Information Technology • Primary focus is applying computing technology to solve problems • User-oriented • Craft Solutions using existing technology • In the Car example • Automotive Mechanics • Computing Example • Design and implement a web site CS1 - CS and Software Development

  9. Computer Science • Study the science of computing • Programming • Algorithms • Theory • In the Car example • Develop more efficient engines • Computing Example • Design and build a web browser CS1 - CS and Software Development

  10. Software Engineering • How to engineer software • Programming “in the large” • Process • Verification • In the car example • Build an engine that will work for 200,000 miles • Computing Example • Build an extendable web browser within 24 months CS1 - CS and Software Development

  11. Code Size CS1 - CS and Software Development

  12. Size Categories CS1 - CS and Software Development

  13. Disasters • 7 deaths of cancer patients were due to overdoses of radiation resulting from a race condition in the Therac-25 software. • On June 4, 1996 an unmanned Ariane 5 rocket launched by the European Space Agency exploded just forty seconds after its lift-off. The destroyed rocket and its cargo were valued at $500 million. It turned out that the cause of the failure was a software error in the inertial reference system. • The 1988 shooting down of the airbus 320 by the US Vicennes was attributed to the cryptic and misleading output displayed by the tracking software. • An Iraqi scud missile hit Dhahran barracks, leaving 28 dead and 98 wounded. The incoming missile was not detected by the patriot defenses, whose clock had drifted .36 seconds during the 4-day continuous siege. CS1 - CS and Software Development

  14. So What Does All This Mean? • Seat of your pants programming may work here, but it won’t cut it in industry!! • There is an urgent need to • Understand computation • Develop techniques to build and manage large software systems • Test and verify that software works correctly • This is part of what software development is all about CS1 - CS and Software Development

  15. The Software Life Cycle • Requirements or analysis • Determine and spell out the details of the problem • Design • Determine how to solve the problem • Coding • Testing • Verify that the program solves the problem • Verify that the requirements have been satisfied • Maintenance CS1 - CS and Software Development

  16. Waterfall Model Requirements/Analysis Design Coding Testing Maintenance CS1 - CS and Software Development

  17. Documents • The work done in each stage is typically summarized in a document • Requirements document • A description of what the customers and users expect the system to do • Specifications • A detail description of how the software system will behave • Design • A description of the various components in the system and how they will interact CS1 - CS and Software Development

  18. Testing • What does it mean to say a program is correct? • That it satisfies the requirements • Testing verifies that the program behaves as stated in the requirements • Note that incorrect, or incomplete requirements could result in an incorrect program CS1 - CS and Software Development

  19. Debugging • Debugging is not testing • When testing you are trying to verify that the software meets the requirements • When debugging you are trying to correct an error • If you are debugging, your software is broken!! • Bugs don’t crawl into your program – you put them there – THEY ARE ERRORS!! CS1 - CS and Software Development

  20. The First Bug CS1 - CS and Software Development

  21. Testing is Not Easy • It is hard to come up with good test cases • The goal of testing is to find errors • Testing can never prove the absence of errors • Testing requires you to assume that you will find errors in your code CS1 - CS and Software Development

  22. Types of Testing • Unit Test • The testing of individual routines and modules but not whole systems • System Test • The testing of the entire system, or a significant portion of it CS1 - CS and Software Development

  23. Test Cases • Equivalence Partitioning • A good test case covers a large part of the possible input • Error guessing • Developing test cases based on where you think the errors will occur • Boundary Analysis • Write tests that exercise the boundary conditions CS1 - CS and Software Development

  24. Data • Classes of bad data • Too little data • Too much data • The wrong kind of data • The wrong size of data • Classes of good data • Nominal cases • Maximum/Minimal normal CS1 - CS and Software Development

  25. Show Me the Requirements • Requirements can come in many forms • Formal requirements document • Here this is a homework assignment • Module, function, class, method specifications • Pseudo-code • Logic specifications • Functional specification CS1 - CS and Software Development

  26. RULE #1 • You must test every piece of code that you write for this course • If you want help from me or any of the TAs you must show test code first CS1 - CS and Software Development

  27. RULE #2 • Don’t be afraid to write throw away code • When testing you will probably write code that will never “see the light of day” • You should write lots of small programs to test and that allow you to experiment with programming CS1 - CS and Software Development

  28. RULE #3 • Always take baby steps • Start a task by picking the smallest easiest portion to do first • Test what you write before you move on to tackle another task • Always try to build on the simple parts that you know work correctly CS1 - CS and Software Development

  29. RULE #4 • Don’t re-invent the wheel • Before writing anything – check to see if it has already been written (by you or someone else) • Feel free to re-use code (anything I post is yours to use) BUT MAKE SURE YOU CREDIT THE SOURCE CS1 - CS and Software Development

More Related