CS 19
Spring 2012
Course Information
Learning Outcomes
In this course you will learn to:
- Analyze common computational problems and design algorithms to solve them.
- Design, write, document, test and debug object-oriented programs of moderate length.
Objectives
- Design and implement C++ programs to solve problems of simple and moderate complexity using procedural and object-oriented methods.
- Correctly and effectively use the following C++ language elements: Classes and objects, Structured data types such as arrays and files, operator overloading, inheritance and polymorphism.
- Design and implement basic dynamic data structures including a Linked List.
- Write code that is well documented and exhibits clarity of expression through effective use of mnemonic identifiers, indentation and comments.
- Apply the following software development principles and techniques: stepwise refinement, top-down and bottom-up design, incremental development, testing and debugging, information hiding and data encapsulation.
- Be prepared to take CS21 and CS24.
- Develop C++ code in a command-line unix environment using standard unix tools, gcc compiler, emacs text editor, and gdb debugger.
- Design and implement C++ language programs to implement mathematical concepts such as statistical array value analysis, sets, trigonometric functions, simple geometry, and complex numbers.
Course Textbook
Absolute C++, Walter Savitch, Addison Wesley, 2002, or
Absolute C++, 2nd edition, Walter Savitch, Addison Wesley, 2005, or
Absolute C++, 3nd edition, Walter Savitch, Addison Wesley, 2007, or
Absolute C++, 4th edition, Walter Savitch, Addison Wesley, 2009
Course Materials and Resources
- Pengo2 account (pengo2.cabrillo.edu at 207.62.186.11)—this is the server where your Java programs will be turned in and tested. Pengo2 is the official programming environment for this class. You are required to use this development environment unless you make prior arrangements with me.
- this website
- SSH "Telnet" software (such as the freeware program PuTTY if your OS is Microsoft Windows) to connect to Pengo
- (optional) SFTP program
Responsibilities
You are responsible for the assigned reading, the self-scheduled lab hours, and what is discussed in each class meeting, including announcements, regardless of your attendance. If you are unable to make it to class, you should arrange to have someone else in the class take notes for you. Keeping up with the assigned reading and the course lectures is important for sucessful completion of the course programming assignments and exams. You should have the necessary materials to take notes during class.
Please do not contact me via email regarding the content of a class meeting that you missed.
This course requires active participation each day of class so it is important for you to attend every class session, arrive on time, and come prepared. Your participation not only enhances your own learning, it benefits other students in the class.
You are responsible for knowing how to calculate your grade (given your raw scores) in this class. I will review the calculation of weighted averages (at any of my office or lab hours) if you've forgotten how to do so.
Flexible Lab Hours
I will be assigning weekly exercises for you to complete during the semester from the sample problems in your textbook. These exercises will help you learn the course material, review important programming concepts, and prepare for your programming projects and exams. Arranged hours are class time and all students are expected to meet this number of hours per week to fulfill the requirements of this course. These exercises are collected but not annotated and returned. During the first two weeks of class, we will discuss the proceedures used to complete and track your required lab time (5 hours and 10 minutes per week.) Five percent of your grade comes the completion of these exercises. Please let me know if you have any questions regarding the online lab portion of the class.
Grading
You may obtain a letter grade (A, B, C, D, or F), or you may choose instead to take the class for credit/no credit. The latter option means that your grade for this course will be credit if you score at least 70% overall and no credit if you don't. Please declare the option you want on your student information sheet. You may change your grading option until the official college deadline. If you do not specify a preference, you will recieve a letter grade. Those who earn 90.0% or more of the possible points will get an A, 80.0% B, 70.0% C, 60.0% D, and lower F.
Homework and Programming Assignments
55% of your grade will be based on your homework. There will be six or seven assignments. Each assignment will be weighted the same. There is no final project.
Homework and programming assignments are due at the specified time and date. If you haven't completed the assignment, I will collect whatever portion you have completed for partial credit. Start small and at least get part of the program working and build from there; this way when you turn in the an assignment, it will accomplish part of the goal. A program that does part of the assignment is better than a lot of code that does nothing. The programs will be evaluated primarily for working correctly. Programs that don't compile will receive a maximum score of 60%
Sample solutions to the assignments will be posted to the website or discussed in class after the assignment was due.
Flexible Late Days
You have two "flexible late days" that can be spent on any of the assignments except for the first assignment. You may allocate them any way that you wish. A "day" can be redeemed to submit an assignment after the deadline (between 1 minute to 1 day late) and still receive full credit. You may use both days for one project, or split them up and use them on up to two assignments. I will collect your assignment normally, but will "replace" your submission with an updated version. To redeem a "flex late day", please notify me via email. Your initial email notifying me that you are going to use a flex late day is due no later than 15 minutes before the due date and time of the assignment. A followup email is due when you are ready for me to collect the revised version of your assignment. Using a flex late day may subject your program to a delay before the program is graded and returned. Flex late days that aren't used during the semester can be redeemed for six (assignment) points of extra credit at the end of the semester.
How To "Submit" Programming Assignments:
Every assignment has an official file name or directory (for multi-file projects) name. At some time after the assignment is due, it will be automatically collected (copied) from your home directory on pengo. Filenames must be exact and are case sensitive. If you need a pengo account or forget your password, I can help you via email or office hours. Please contact me if you have any questions about this process.
Cheating, Plagiarism and Collusion
Review this page on Academic Integrity
Exams
There will be a mid-term and a final exam. Exams must be taken when given except by prior arrangement with me. Exams will be 40% of your final grade. The midterm and final exam will carry approximately the same weight. The midterm will be a closed-book writen exam taken in the classroom. The final exam will be a lab practical exam scheduled in the CTC.
Consulting with me
If you need some extra help, or need to consult with me regarding any course-related matter, please feel welcome to contact me during my scheduled lab or office hours. My lab and office hours provide times that are specifically reserved for helping you outside of the lecture. Make an appointment if you cannot come during my scheduled lab or office hours. My lab and office hours are shown on my web page.
This is a difficult course. Almost everybody is going to get "stuck" at some point in the semester. When this happens please don't hesitate to get some help. A little bit of help can save you hours of pounding your head against the wall. I have regular office hours and lab hours or you can send me email or call me.
Getting help in the CTC
Here's a link to instructor or tutor hours in the CTC Lab.
Students needing accommodations should contact the instructor as soon as possible. As required by the Americans with Disabilities Act (ADA), accommodations are provided to insure equal opportunity for students with verified disabilities. If you need assistance with an accommodation, please contact Disabled Student Services, Room 810, 479-6379, or Learning Skills Program, Room 1073, 479-6220.
Advice from former CS19 students:
- "Read your handouts before you start your projects, study for exams."
- "Write out programs! Time will be cut in half."
- "Set aside time to study REGULARLY and to do assignments. Must know when to stop."
- "It seems easy at the beginning, but don't be fooled. Get your programs done quickly and don't wait until the last minute."
- "Make sure your schedule can handle it."
- "Don't wait until the last minute to start working on your projects."
- "When you get a programming assignment start on it immediately. It always takes more time than you think to debug."
- "Don't freak! It gets easier as you begin to think like a computer scientist. Put in the time, ask for help and you'll do fine."
- "Whatever you don't know, it's not over your head, and you'll come away knowing a LOT more."
- "Keep up... work in the lab some (even if you have a machine at home) especially when finding something difficult."
- "Work with a partner or group in the lab."
- "Read all of the assigned material ahead of class. Do the programs as soon as you feel capable."
- "Relax! and ask for help."
- "Assignments take three times longer than you expect. Even for 4.0 students."
- "Take advantage of the class discussion group."
- "Be prepared for a lot of hours of work each week, but don't sweat it. Put in the hours and the rest will come."