.Open Class 01 of CSCI201 Computer Science I . Podcast 1 .See ./01.mp3 . What is computer Science? Programming? .See http://www.npr.org/templates/story/story.php?storyId=4532247 (news story with link to a 9 minute audio story). CSci is more than Programming! .Set Understanding how software works. Understanding how hardware works. Understanding the limits of computers and software. Using our understanding to make things better (and make money). Working with people to find out how computers can help them. .Close.Set Key words: algorithm, problem, solution, source code, design, logic, ... One Key Skill: THINK. . What is the Job Market Like? It is never bad if you are smart and well trained. This department has done very well over the years. A recent survey of of postings on an online job board (Dice.com?) showed that there were more jobs on 2004 than 2003, but they didn't pay as well. Here is a link to the "User Friendly" Job board: .See http://www.geekfinder.com/ Computer scientists work in just about every field and type of organization. The one thing in common is the existence of problems and the efficient use of computers to solve them. . Why are you teaching Linux? Total cost of ownership, reliable networked systems, + hard core professionals use it. . Why are you teaching C++? Used in many industries. After C++ other languages are easy! It is also leads to programs that execute quickly. It is like a tool box full of very sharp power tools. You need to know what you are doing but you get a lot of power and speed in return. C++ is very much the parent of most modern (web-based) languages. . How is C++ used in Games? You need a good graphics and user interface library plus a "games engine" that understands the physics of objects. C++ acts as the glue connecting these components. The components are probably also written in C and/or C++. . How do you develop a program? Very carefully! This quarter we will look at two approaches to developing program. The first is good for small scale projects -- one person solving one proplem. The other is for large projects -- many people with a changing set of problems. The first method is the .Key structured method and it is good for solving simple problems that don't change. .Box First: understand the problem. Second: work out what the user will input and the program will output. Third: work out an .Key algorithm that converts the user's input into the programs output. If possible discuss your algorithm with somebody. Fourth: translate the $algorithm into computer code Fifth: test the program and remove the bugs. Sixth: make the fixed program easier to understand. Seventh: User testing... .Close.Box The second method is the .Key object-oriented method and it fits the more typical situation of a team of programmers tackling a family of changing problems. .Box First: understand the situation -- problems and previous solutions. Second: work out how the user will use the software. Third: sort out the data needed. Fourth: design objects to store the data and do useful things. Fifth: Plan the interactions between the objects. Sixth: write code for the objects, user, data, .... Seventh: Things change -- so go back to the first step. .Close.Box There is much to say here. See .See ./projects.html and the productivity and quality tips in our text. . Why are you teaching UML? A picture is worth a thousand words. But to be useful in developing software the picture must be a precise diagram that other people use and understand. The $UML is the only industrial diagramming language for software. . How does a student survive CSCI201? .List syllabus .See ./syllabus.html .Set Teacher Book Rules Organization .Close.Set Schedule .See ./schedule.html Lab work .See ./labs.html Assigned work .See ./schedule.html Class work .See ./schedule.html Rules .See ../syllabus.html .Close.List . How do I learn more UNIX? The CS Club may conduct a workshop $TBA. . What do I need to do to prepare for this class? Have you written a program? Do you want to do it again? . Should I buy some software or hardware? No. . Can I work at home? Yes.... but it is harder than using our labs. . Is there any tutoring for this class? The department doesn't run any special sessions but we usually have some students ready to help at the learning center on campus. . How has computer programming changed through out the years? Here is my quick and personal list. .List 1800s Ada Lovelace programs Babbage's Analytical Engine. <1940s Programs were written for human `computers` to execute in English and mathematics. 1940s Programs written by changing the machine hardware (in secret). 1950s Instructions written as numbers and stored in memory. 1960s First programming languages mimic mathematical formula(FORTRAN, ALGOL) or managerial english(COBOL). Programs became complicated so we split them up into independent pieces called modules. Flowcharts used to design programs. Many local low level languages. Mainframes. 1970s Structured programming. Programs are designed using pseudocode and diagrams and split into functions. Pascal. C and Unix. Minicomputers. 1980s Data Abstraction. We started to group functions arround data and let other parts of the program only see those functions. Ada. The IBM PC. The Apple ][ and Mac. 1990s Objects. C++. Java. The Web. 2000s Modeling: diagrams of objects etc used to analyse problems and design solutions. Scripting: Perl, Ruby, C#, Python,... . Next -- Lab 01 and Class 02 .See ./lab01/ .See ./02.html .Close Class 1 of CSCI201 Computer Science I