- Analyze common computational problems and design algorithms to solve them.
- Design, write, document, test and debug object-oriented programs of moderate length.
- 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 cs24 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.
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
- Pengo account (pengo.cabrillo.edu at 22.214.171.124)—this is the server where your C++ programs will be turned in and tested. Pengo is the official programming environment for this class. You are required to use this development environment unless you make prior arrangements with me. Here are some suggestions for working with Pengo.
- this website
- SSH "Telnet" software (such as the freeware program PuTTY if your OS is Microsoft Windows) to connect to Pengo
- (optional) SFTP program
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. You are responsible for keeping backup copies of your class work.
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.
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 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 (4 hours and 5 minutes per week.) Ten 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.
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
50% of your grade will be based on your homework. There will be six programming 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.
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 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.
Here's a link to instructor and tutor hours.
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 Disabled Student Services(Room 1073, 479-6379) or the Learning Skills Program (Room 1073, 479-6220.)