Description

Instructor:
Bruce A. Draper
Office: 442 CSB
Office Hours: T: 10:50 - 11:50
Email: draper@cs.colostate.edu
GTA:
Noah John
Office: 120 Lab
Office Hours: Tues: 2pm-4pm, Wed: 11am-1pm
Email: njohn@rams.colostate.edu
GTA:
Jake Lee
Office: 235 CSB
Office Hours: R: 11:00 - 12:00 and 1:00 - 2:00
Email: lemin@cs.colostate.edu
Lecture Time and Place:
9:30-10:45, TTh, Wagar 232

CS253 is the final course in the programming sequence that includes CS160, CS161, CS200 and CS270. One goal of CS253 is to teach C++, since the previous courses in the curriculum are in Java (160/161/200) or C (270). The more significant goal, however, is to complete the process of training a professional programmer. When this course is complete, you should have a better understanding of (1) the strengths, weaknesses and roles of different languages (at least along the C,C++,Java spectrum); (2) the role a compiler plays in converting high level code to source code, and how you as a programmer can influence it; (3) when and where memory is allocated; (4) when and how memory can be reclaimed; (5) how functions are dispatched; (6) how to write efficient code; and (7) how to exploit templates well. In addition, the recitations (which are a mandatory and important part of the course) give hands-on experience with tools used for software development in Linux, including make, gdb, svn and valgrind.

Prerequisites

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). 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.

Textbook

There is one required textbooks 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 ISBN is 0-201-61246-1.) The recommended text is "Programming Principles and Practice Using C++" by Bjarne Stroustrup. This book is more of a reference, and some students may prefer to use the www.cplusplus.com on-line resource instead. (Warning: there are lots of other C++ references on-line. I strongly recommend using www.cplusplus.com.)

Grading

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

Activity Weight
Programming Assignments 40%
Lab Assignments (~10) 10%
Quizzes (in-class) 10%
Midterms (2) - in-class 20% (10% each)
Final Exam 20 %

Semester grades are determined by the weighted sum of points earned in each of these areas. Subjective curves (set by the instructor) may be applied to individual assignments or tests. If so, this will be noted when the assignments/tests are returned to the class.

Exams and projects will be done individually and grades assigned on an individual basis.

Programming Assignments

The programming assignments in this class are individual; no shared or group projects are allowed, nor may you submit any work that isn't your own (see below). In addition, 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 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 do the next assignment, you just won't get any credit for it if you miss the deadline. We therefore strongly recommend that you keep up with the assignments and do a good job 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. The test files will also be distributed to the class after the due date, so that you can get immediate 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 to resolve the discrepancy.

Recitations (Lab Assignments)

Recitations are a 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 C++. There will be approximately 10 recitation sessions that introduce new material. Each will begin with a short presentation by the GTA, followed by an exercise. Exercises must be submitted by the end of the recitation session. Non-attendance will result in a score of zero for that recitation.

Quizzes

Quizzes may be given at the start of any lecture in which a reading assignment is due (as indicated by the progress page on this web site). They are intended to be relatively easy if you have done the reading, but you should not expect to do well on a quiz if you haven't done the reading.

Late and Makeup Policies

Midterm and Finals: Students who will miss an exam for a university-sanctioned activity need to talk to the instructor at least two weeks before the exam date.

Because exams are curved, it is virtually impossible to give a make-up exams. If a student cannot make an exam because of a documented and unforeseeable emergency (e.g. serious illness or family emergency), they should talk to the instructor and alternate arrangements will be made. Students who miss an exam for any other reason will be given a zero.

Homeworks are due on the due date given. There is no late period. (Why? Because test cases will be released shortly after the due date). Homeworks that are not submitted on time receive a grade of zero. As above, if a documented and unforeseeable emergency arises, the student should talk to the instructor so that alternate arrangements can be made.

Important Dates

First in class midtermThursday, September 26th
Second in class midterm Thursday, November 7th
Final Exam Thursday, December 18th, 2:00 to 4:00 PM

Professional Conduct

All programming assignments and recitation exercises in this class are single-person projects. No student may submit any work that is not completely their own. Among other things, this implies that code may not be taken from the web or from any other student (indeed, from any other person). You may re-use your own code from one assignment to the next. If a student submits work that is not their own, they may receive punishments consistent with the department's code.

Exams in this class are also single-person endeavors; students may only turn in their own work. In addition, the use of notes, textbooks, calculators or any other external aids (except as explicitly permitted by the instructor) are not allowed.

All students are expected to conduct themselves professionally. We (the instructors and GTAs) assume you are familiar with the policies in the student information sheet for the department, and in the department's Code of Ethics. We also assume that you are familiar with the university's integrity policy and follow the university's honor pledge ("I will not give, receive or use any unauthorized assistance on academic work").

Additionally, you are computing professionals, albeit perhaps just starting. 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 an electronic device is becoming a distraction the student 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.