.Open CSCI 202 Computer Science II Spring 2007 More information is in the Generic Syllabus .See http://csci.csusb.edu/dick/syllabus.html and on the World Wide Web (WWW) site for this class .See http://csci.csusb.edu/dick/cs202/ You need to find these as soon as possible. Check them for updates several times each week. . Description Computer science is about predicting how pieces of software and hardware work together to solve people's problems. This is part of creating useful software. CS202 is the second class in the core of all the Computer Science majors. It covers the second half of the ACM CS1 and the first part of the ACM CS2. This class is required by other B.S. and BA degrees, and the Computer Systems Administration Certificate. This class is a prerequisite for CSCI320, 330, 372, 375. . Prerequisites All tests, lectures, and work assume you have passed a class equivalent to our CSCI201. You need to have a Satisfactory ELM. Previous lab experience with UNIX is very helpful. . Goals You will develop problem solving skills used in Object-Oriented programming and software engineering. You will use a languages, operating system, and libraries that (1) are popular in industry and (2) force you to think about what you are doing. You will learn about new control structures and new types of data. The course includes the Unified Modelling Language, multi-file programming, data abstraction, encapsulation, templates, inheritance, polymorphism, and the standard library. . Reading .Key Required Text: "C++ How to Program" by Deitel and Deitel, 6th Edn., ISBN 0-13-615250-3. It should be in the book store. Used and cheap copies should be OK, but do not buy older editions. You can also read it, a page at a time, online, for free, on campus or through the Pfau Library Proxy.... This is only good for emergences and in class. .Key Reference Works: My WWW site has many useful pages including the draft specification .See ../c++std/ of the C++ language. C++ books in the library are in the QA76.73.C153 section. A former CS202 student recommends "Conquering C++ pointers" by Robert J. Traister, ISBN 0-12-697420-9. There will be handouts on the UML but Fowler's "UML Distilled" is an excellent reference in practice. If you haven't used Linux much then Daniel J Barrett, "Linux pocket Guide," O'Reilly Feb 2004 $9.95 ISBN 0-596-00628-4 is an inexpensive and useful reference. Also go to the Computer Science Club's Linux sessions. For more try "Linux in a Nutshell" and "Learning the VI Editor" both from O'Reilly & Associates, Inc. . Work You will study the text. You will do much supervised and independent programming. You will do independent offline work (mainly reading and thinking) as well. Some of this work is submitted for grading. Note. I can't tell you how much work the project work will take: good programmers produce code 5 times faster than bad ones! . Meetings (40pts=8%, 2 pts per session) Attend all class meetings from beginning to end or make up the work yourself. Exception - medical and other documented emergencies. *Note: mobile phones and wireless devices -- Turn off audio alarms. Do not use wireless devices during class time. . Assigned Work (20pts=4%, 1 pt per session) Start with the web page/study guide. Read the part of the text assigned in the schedule and submit one question on it. The link to submit questions is at the top of all the CS202 pages. To earn a point it must arrive in my inbox before a message that I send at 10am on the day of the class. . Quizzes(100pts=20%, 120 pts Max) There will be four quizzes each worth about 30 points each. Points above 100 will be used to make up points lost elsewhere. See the schedule for dates and topics. Quizzes will be closed-book and supervised. No wireless communication! You should prepare a 11.5in><8in sheet of notes to use in each test. You may use a calculator, but not a computer. A computer is any device that lets you compile and run C++ programs or browse the web. The quizzes and final will require you to (1) read, interpret, correct, and complete pieces of C++ programs, and (2) write correct C++ code. . Labs(100pts, 20%, 10pts per lab) You can only attend the lab that you have enrolled in. The instructions are on the WWW site. I may change them until just before the class just before the lab. I will give you grades/scores for each lab by the end of the lab. Scores vary from full credit(A=10 points) down to zero. Seven (7) points (a D) will be given for being present, working hard, and making demonstrable progress during the whole lab period. . Comprehensive Final(200pts, 40%) The final exam will be on June 13th from 2pm to 3:50pm. It will go over material covered in quizzes, labs, projects, lecture/discussions, assigned work, and notes. The same rules apply as for Quizzes above. .Open Project Work(80pts, 16%, 20 points max per project) You will be writing four(4) required programs (see the schedule below and on the web site) based on exercises in the book. The programs must be your own work and unlike anybody else's. More details will be put on the WWW site. You may, if you wish, submit a final extra project (P5 below) to make up up to 20pts lost befor the final. It is better to give me anything on time than give me a perfect project late. .Key Start Early and compile often! Aim to complete each project before the deadline because things go wrong. First think out a solution and roughly sketch it on paper. Start coding the program with a comment that has your name plus the number of the exercise. Add a short description of what the program demonstrates or does. Add the necessary "#include"s and an empty "main" function and make it compile. Add a set of tests of the classes and functions you need -- and compile it and watch it fail. Then add missing stuff or fix broken parts until all the tests pass. Then tidy up. If a project demands several files then each file must identify who you are, the name of the file, and what its purpose is. . CS202 Project Requirements In a good software company, your bosses and colleagues want your work to be (1) on time, (2) correct, and (3) understandable. Late or confusing work is penalized. So, if the work is late it gets no points and if I can't understand it, then it loses points. Good projects also meet academic standards: (1) They show the skills and knowledge covered in the course at the time. (2) They must not pirate other people's work. Warning: I'm good at spotting errors and borrowed work. I have tools that can find anything that you download from the web. Work must be .Key on time ! Partial credit is given for incomplete work including programs with documented errors. You won't lose points for missing features or bugs, if you document them in the code. (2) The code must explain what it does and how it does it. (3) All copied code must be documented in comments. What to hand in: I want to read your code and know that it will run. Print it out, staple it and hand it in! No cover sheets, folders, etc. No test runs. Each file should have a comment with your name and a description of the project as a comment at the top. It should have more comments explaining anything complicated or buggy. Later projects may need an UML class diagram. The schedule lists a chapter. Pick one programming exercise from the end. All earn the same score. However, I expect a simple project to be done better than a more complex one. Project Schedule .Table # Due on One exercise from Required Topic .Row P1 April 15 Chapter 7.10, 11, 12, 15, 17,20, 22..37 Arrays or Vectors .See ./p1.html .Row P2 April 29 Chapter 10.8 or 10.9, 11.15, 11.17 Classes and Objects .See ./project2.html .Row P3 May 13 Chapter 13 Polymorphism .See ./project3.html .Row P4 Jun 3 Chapter 17 Sequential Files .See ./project4.html .Row P5 Jun 17 Chapter 22 The $STL .See ./project5.html .Close.Table . Warning about projects and quizzes Several quizzes will ask you questions about the project you have just handed in. The score will depend on how well the answers match the project. . Project Hints (0) Always Seek Knowledge (ASK): Come to see me with questions about what is needed before you started -- "dumb questions are better than dumb mistakes". (1) Do the simplest thing that could possibly work. (2) If in doubt, take a small step in a useful direction. If stuck, do something different, and come back later. If you are coding, draw a picture. If drawing, try code. Visit the Comp Sci Club .See http://club.csci.csusb.edu/forums/ ! Take a break: go shopping, eat something, get some exercise, come to my office, etc.. Read & Think: WWW, the book, the Pfau library, the Internet, ... . Find a tutor in the learning center. Talk to a student who is doing a different project. (3) Unexpected bugs? Bring printouts of code to my office. Talk to a lab assistant or any CSci. teacher. (4) Spare time? Refactor the code -- reorganize and retest, one simple safe step at a time, so that it is easier to understand. Use the DRY="Don't Repeat Yourself" rule to make code better. (5) Stop at the deadline. Hand in what you've got. (6) Answer questions in the quiz on your project. . How I will grade projects I read the program from beginning to end and then assign a letter grade and/or a score. As I read it I will mark up problems. An A(100%, 20 points) program identifies who did it what it does. It is clear that it does what it says it does. There are no spelling mistakes or grammatical/syntax errors. It shows that you have understood the material in the course up to that time. Any bugs are described in the code. A B(90%, 18 points) is like an A program but is not as clear and not as easy to understand. A C(80%) program still identifies who did it what it does. But it may not do what you think it does(bug) or may have other mistakes. A D(70%) program has undocumented errors, spelling mistakes, grammatical goofs, syntax errors, etc.. It shows that you didn't understood the material in the course up to that time. An E(60%) program is worse than a D but is still an honest attempt. I may have to use unlettered percentages for really bad work. An F(0%) program is either late or has some plagiarized material in it. I may use grades like "A-"(19 points) for odd points and intermediate quality work. .Close Project Work(80pts, 16%, 20 points max per project) .Close