copyright Steve J. Hodges

CS 19

Spring 2019

Course Information

Learning Outcomes

  1. Analyze common computational problems and design algorithms to solve them.
  2. Design, write, document, test and debug object-oriented programs of moderate length.


  1. Design and implement C++ programs to solve problems of simple and moderate complexity using procedural and object-oriented methods.
  2. 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.
  3. Design and implement basic dynamic data structures including a Linked List.
  4. Write code that is well documented and exhibits clarity of expression through effective use of mnemonic identifiers, indentation and comments.
  5. 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.
  6. Be prepared to take CS 21 and CS 24.
  7. Develop C++ code in a command-line unix environment using standard unix tools, gcc compiler, emacs text editor, and gdb debugger.
  8. 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++, 4th edition, Walter Savitch, Addison Wesley, 2009, or
Absolute C++, 5th edition, Walter Savitch, Addison Wesley, 2012, or
Absolute C++, 6th edition, Walter Savitch, Addison Wesley, 2015.

Course Materials and Resources


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 some or all of a class period, 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.

During class I expect that you will take notes. I recomend paper notes. Use of laptops during class is discouraged. If you use a laptop or other screen during class, please sit towards the back to minimize disruption, and only use the device for note taking, and not for unrelated activities or for working on programming assignments during class time.

Please do not contact me via email regarding the content of a class meeting that you missed.

You are responsible for keeping backup copies of your class work.

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. Here is a document that describes how to calculate a weighted average. (.pdf) I am also happy to review the arithmetic needed to do this if you come to see me during any of my lab or office hours.

Flexible Lab Hours

I will assign weekly exercises (at the class orientation) 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. The programs you write each week during your required lab time and the number of hours you completed each week should be stored/recorded into the appropriate folder on Pengo (TBA-19 and LABS-19.) During the first week of class, I'll review the procedures used to complete and track your required lab time (4 hours and 5 minutes per week,) and/or you can review the README files in those directories. Five percent of your grade comes from the completion of these exercises. Please let me know if you have any questions regarding the online lab portion of the class.


You may obtain a letter grade (A, B, C, D, or F), or you may choose instead to take the class for pass/no pass. The latter option means that your grade for this course will be pass if you score at least 70.0% overall and no pass if you don't. If you do not specify a preference, you will receive a letter grade. To request the pass/no-pass option, make sure to complete your request online via Web Advisor/eForms before the deadline. 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

50% of your grade will be based on your homework. There will be six or seven assignments. Each assignment will be worth 100 points. (The Information Survey is worth 10 points.) There is no final project or special presentation.

Homework and programming assignments are due at the specified time and date. Late assignments will not be accepted (except as specified below.) If your work is not complete by the due date, your work will be reviewed for partial credit and you should proceed to the next assignment. Start small and at least get part of the program working and build from there; this way when you “turn in” the 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.

Program correctness is a major portion of the evaluation. Programs that don't compile will receive a maximum score of 60%. Following the input and output requirements is important. Failure to do so may mean that your program is incompatible with my test cases, resulting in a much lower overall program score.

Sample solutions to the assignments will be discussed in class after the assignment is 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 24 hours 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. This initial email notifying me that you are going to use flex late day(s) is due no later than 15 minutes before the due date and time of the assignment. In the email, include your full name, Pengo login, class, and assignment (by number) that you are requesting the flex late day use for. Do not tell me how many flex late days you will be using in the email. A second email is due within 24 (or 48) hours of the original deadline—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. Failure to follow the directions for flex late days may result in their expenditure without any benefit.

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. An empty receipt file indicating the sucessful collection or failure is created at the time the assignment is collected. 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


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 45% 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.

Getting help

Here's a link to instructor and tutor hours.

Seven Keys for Academic Success

  1. Study With and Get to Know Other Students
  2. Use a Study Schedule and Time Management Strategies
  3. Come to Every Class Session
  4. Communicate with Your Instructor
  5. Expect to Use Textbooks and Readings
  6. Set Academic Goals
  7. Support Services Are Here for You - Free!

Find out more about the seven keys!

Student Equity

Here's a link to the Cabrillo Office of Student Equity website.


For help with financial aid, counseling, or general information, please visit the Veterans Information Center (Room 914.)

AB540, DACA, and Undocumented Students

Cabrillo College is a "sanctuary campus."
The Dream Resource coordinator can help clarify any questions you may have as well as provide information about college, resources, clubs, and scholarships. Please contact Adela Naranjo-Bernabe, 477-3379, (Aptos Room 104; Watsonville Room A123.)

Campus Resources

Please come see me if you have questions about the resources and support that is available on campus.
Some of the resources on Campus (one page; .pdf)


All students needing accommodations should inform the instructor assoon as possible. Veterans may qualify for accommodations. Wounded Warriors may have acquired injuries that, through the American with Disabilities Act (ADA), entitles the use of accommodations to ensure equal opportunity for students with verified disabilities. To determine if you qualify or if you need assistance with an accommodation please contact the Accessibility Support Center (Room 1073, 479-6379,) or the Learning Skills Program (Room 1073, 479-6220.)