Ross Beveridge
Office: 348 CS Building
Office Hours: By arrangement
GTA Assignment Pending
Office: NA
Office Hours: NA
Lecture Time and Place:
9:00-10:15, Tue, Thur, CSB Room 130
Recitation 1 Time and Place:

The CS Roo course template provides a hopefully relatively easy to use set of PHP files customizable for different CS courses at CSU. The paragraph you are reading will be replaced with a one page paragraph overview/description of the course. It then appears both on the course homepage as well as at the top of the course Syllabus. The following concerns shaped the development of this template. First, when one copies the file tree where this site lives the result is a new fully functional and self contained site ready for customization. Second, anyone using this template must enjoy the freedom to work at the level of code, both HTML and PHP. Third, the heart of the website is the developing course progress page, and this is maintained in the form of tab delimeted data file editable using any standard spreadhsheet program.

The documentation on how to use these templates are actually included as a lesson plan under the Progress tab.

What follows is taken from the CS 253 Fall 2015 Syllabus - it will NEED modification.


In order to understand the material in this course, you should be familiar with object oriented programming in Java (as taught in CS161) and the basics of data structures (as taught in CS200). You should be able to design and implement a program from scratch with objects and data structures (e.g. binary trees). In addition, you should know the basics of computer architecture (as taught in CS270). Concepts such as pointers, registers, stack frames, caches and virtual memory should already be familiar to you.


There is one required textbook and one recommended textbook for this course. The required text is "C++ for Java Programmers" by Mark Allen Weiss. (Warning: there is another text with the same name by Timothy Budd. Make sure you get the Weiss book. The Weiss book ISBN is 0-13-919424-X.) The recommended text is "Programming Principles and Practice Using C++" by Bjarne Stroustrup. This book is a reference, and the alternative is to use the on-line resource instead. It is just a matter of whether you prefer your references in print or on-line. One note: there are lots of other C++ references on-line, many of which are out of date or non-standard. If you are use an on-line C++ reference, then the is strongly recommended: and yes it is free.


Here are the formally graded elements of the course and associated weighting:

Activity Weight
On-line quizzes (about 11) 10 %
Recitations (about 11) 10 %
Programming Assignments (about 9) 40 %
Midterms (2) 20 %
Final Exam 20 %

Your final grade will be determined by the weights above, with one important caveat. Both the tests and the programming assignments assess aspects of skill that are necessary for moving on. Therefore, a student who gets below 65% in either the programming assignments as a whole or the midterms/tests as whole (not counting quizzes) will get a 'D' or worse for the course, even if their scores in other areas raise their overall score to a passing average.

On-line Quizzes

On-line quizzes are associated with every reading assignment, and are required. The quizzes are mostly yes/no or multiple choice questions about the reading assignment, and they are designed to be straightforward if you have done the reading. Even better, they are open book (but not open neighbor or open colleague, see below). All quizzes are administered through Canvas; you have 15 minutes to take a quiz and you may take a quiz only once. The quizzes become available after the lecture in which the reading is assigned, and must be completed BEFORE THE LECTURE for which the reading is due. Quizzes become unavailable 15 minutes before class starts. No "make-up" quizzes are given, and no quiz is dropped.


Recitations are another required part of the course. While the lectures teach problem solving in C++, the recitations introduce students to the linux-based software development tools needed for professional software development in C++. There are 10 mandatory recitation sessions. Most introduce new tools. Some provide examples of advanced C++ programs. Recitations begin with a short presentation by a GTA, followed by an exercise. Exercises must be submitted by the end of the recitation session to receive credit. If you do not complete the exercise by the end of the recitation, you may submit incomplete work for partial credit. Non-attendance (or failure to submit partial work by the end of the recitation) will result in a score of zero for the recitation.

Programming Assignments

This is a programming course, and doing the programming assignments is absolutely critical (and accounts for 40% of your grade). The programming assignments are incremental. This means that the first assignment will be to perform a task. The second assignment will be to extend the first assignment to do something additional. The third will extend the second, and so on. As a result, if you skip an assignment, you will have to do it anyway in order to complete the next assignment, you just won't get any credit for it. So it is a good idea to keep up with the assignments and do well on each one, otherwise the next assignment will be more difficult for you.

Homeworks will be graded automatically. Your program will be executed on novel test files, and your grade will be determined based on whether it produces the correct output when run on the department's linux cluster. Since C++ programs are not always portable across machines (for reasons we will discuss), it is essential that you test your programs in the department's linux cluster before submitting them. Note that you will not be given example inputs or outputs before assignments are due. Creating test cases is part of the assignment. If the assignment description is ambiguous, it is up to you to seek clarification from the instructor.

The test files used for grading will be distributed to the class shortly after the due date, so that you can get feedback by running your program on the same test files. If the results you see when running your program do not match the results that the GTA reports for your program, you should talk to the GTA promptly. However, in all but the rarest of cases, you should be prepared to understand that the definitive test of your code is that made by the GTA and what you are seeking in talking to the GTA is an understanding of how to avoid loosing points over similar discrepancies int the future. To put this another way, you should contact the GTA so but of you understand why there is a difference, you should not assume that your assignment will be regraded: in general it will not.

Tests and Exams

Tests and exams are another important part of your grade (totalling 40%). While the programming assignments develop and evaluate your ability to write C++ programs, the tests and exams evaluate your ability to read C++ programs that use the specific techniques discussed in class. Tests and exams will often consist of packets of C++ code (written by the instructor) and sets of questions about that code. Your task is to read the code and answer the questions. Be prepared for tests/exams that are extremely challenging.

Grading Policies

Quizzes, recitations, programming assignments, tests and exams will all be done individually and grades assigned on an individual basis. You may not submit any work done by other people under any circumstances. That you understand this requirement and follow it is essential and indeed the consequences for what is generally called "cheating" can take many forms including being dismissed from the University. Please see Professional Conduct below for more information and links to resources.

Semester grades are determined by the weighted sum of points earned in each of the areas summarized in the table above. Total points for each area are normalized so that the best possible score for the semester is 100. Typically the A- to B+ cutoff falls at 90 points, the B- to C+ cutoff at 80 points, and so on. While this is the typical grading procedure, the instructor reserves the right to make adjustments. Also, repeating from above, any student earning less than 65% on either the programs or exams portion of the course should not expect to receive a passing grade. Indeed, such low performance on either the exams or the programming will result in a letter grade of 'D' or worse.

Late and Makeup Policy

Deadlines are deadlines. If you fail to take a quiz, do a recitation, hand in a programming assignment, or take a test/exam on time, you get no points for that element.

There is one important class of exceptions to the rule above: unforeseeable emergencies. Examples might include severe illness, the death of a family member or close friend, a house fire, etc. In the case of an unforeseeable emergency, please talk to the instructor.

Important Dates

First in class midterm Thursday, October 1st
Second in class midterm Thursday, November 5th
Final Exam Thursday, December 17, 6:20PM to 8:20PM

In-class midterms and the final exam will be held in the same classroom as the regular lectures. While no change to the midterm dates is anticipated, the instructor reserves the right to change these dates with a weeks notice.

Professional Conduct

All students are expected to conduct themselves professionally. We, specifically the instructors and GTAs, assume you are familiar with the policies in the student information sheet for the department. This course will adhere to CSU's policies as explained at the Academic Integrity website and the Student Conduct Code. At a minimum, violations will result in a grading penalty in this course and a report to the Office of Conflict Resolution and Student Conduct Services.

Additionally, you are computing professionals. You should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct HERE.

We work to maintain an environment supportive of learning in the classroom and laboratory. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular:

  • Please turn off the ring on your cell phone. If you are expecting an emergency call, sit near the door and slide out discretely to take it.
  • In class use of electronic devices in general, and laptops specifically, is permitted as a courtesy so that you may better participate and learn. If at any time the instructor judges that your use of an electronic device is becoming a distraction to others, you may be asked to to turn it off and put it away.
  • All exams and quizzes are to be done without the aid of notes of any kind. Laptops and all other electronic devices must be shut and put away during exams and quizzes.
  • University labs (including but not limited to CSB 120) are professional, not personal, spaces. We expect professional behavior in these labs at all times.

Discussion Boards (added 10/02/15 Ross)

A class discussion board is being used to support this course. In particular, the discussion board is hosted at Piazza. All normal expectations regarding professional conduct apply to the discussion board. In addition, here are some explicit guidelines to assist in establishing the tone and expectations regarding the use of Piazza.

  1. No posting of any code for assignments.
  2. No inappropriate postings: e.g. profanity, sexism, racism, bullying, inflammatory remarks, bad taste.
  3. No grade inquiries: make those directly to the instructors.
  4. All students are expected to follow the discussions.
  5. Instructor posts, like in-class announcments, may clarify and even alter assignment specifications.
  6. Use the existing topics. Please don't start new threads.
  7. Only answer questions by other students when you are confident you are both correct and able to craft a helpful explanation.
  8. Questions may of course relate to how best to use tools.
  9. Do not expect instant answers. While answers may often come faster, a 24 hour response cycle is reasonable.
  10. Posts are anonymous one student to another through the Piazza interface.
  11. Posts are archival and individualized for the instructors.

This last item deserves additional comment. Please, keep in mind every word you type may be retained and shared by the instructor with others when the instructor determines there is good reason to do so. This should not concern you. It is the nature of a public discussion board that what you type is archival and public. However, understanding the public and personally identifiable nature of the discussion board should help reinforce the comments above about the importance of Professionalism.