Table of Contents
|Boyle||MW 420-535||ocnps 100|
|Zeil||MWF 1:00-1:50||dragas 1117|
CS250 introduces the programming techniques required to scale up to larger problems than are treated in the introductory programming course. Topics include the software life cycle, methods of functional decomposition, design documentation, abstract data types and classes, common data structures, dynamic data structures, and algorithmic patterns, and testing and debugging techniques.
Malik, C++ Programming: from Problem Analysis to Program Design, 5th Edition, 2010, Thomson Course Technology
This book is frequently sold with accompanying CDs. We son't use them, so don't worry about it. If you can get a used copy that is missing the CDs, or if you can get a better price on a new one without the CDs, go for it!
Optional text: Agans, Debugging, 2002, AMACOM, 0-8144-7168-4.
Not available through the bookstore, but you can order it.
Students must register for a lecture section, a lab section, and a recitation section of CS250.
The prerequisites for this course are:
CS 150, Problem Solving and Programming I,
Math 162M, Pre-Calculus I
The co-requisite for this course is:
CS 252, Introduction to Unix for Programmers
(A co-requisite is a course that must be taken before or during the same semester as this course.)
Although CS252 is, itself, a self-paced course, students in CS250 will be expected to have completed specific portions of it in preparation for some laboratory sessions, as indicated on the coursepage.
Assignments for this course will include laboratory assignments and a design project. Both may involve programming in C++.
The “official” compiler for this course is the Free Software Foundation's g++ (also known as gcc or GNU CC), version 4.5 or higher. This is the compiler that the instructor and/or grader will use in evaluating and grading projects. If you have access to other compilers, you may use them, but you are responsible for making sure that their projects can be compiled by the instructor and/or the course's grader using the official compiler.
You may want to develop your programs on the most convenient compiler and then port it over to the official environment. Please don't underestimate the amount of time that may be involved in coping with subtle differences among compilers.
You can do all work in this course using g++ on the CS Dept Unix servers via ssh/X. If you like, however, you can obtain the g++ compiler for free from a variety sources. Links will be provided on the course Library page.
The course website includes an online Navigating The Course Website. Most course-related questions should be asked there. Email should be used only in cases where the Forum is clearly inadequate (e.g., for help in entering the course website)., as described in
|Chris Boyle||Steven Zeil|
|Dragas 1100D||E&CS 3208|
|683-6001 ext. 6289||683-4928|
Unless explicitly stated otherwise, assignments and project work are due by 5:00PM on the due date listed in the course schedule. For weekly assignments, this means that you must have submitted the assignment before the first lab session for the coming week (even if that is not the lab section for which you are registered).
Late assignments and make-up exams will not normally be permitted.
Exceptions will be made only in situations of unusual and unforeseeable circumstances beyond the student's control, and such arrangements must be made prior to the due date in any situations where the conflict is foreseeable.
“I've fallen behind and can't catch up”, “I'm having a busier semester than I expected”, or “I registered for too many classes this semester” are not grounds for an extension.
Extensions to due dates will not be granted simply to allow "porting" from one system to another. "But I had it working on my home PC!" is not an acceptable excuse.
Except where explicitly stated otherwise, everything turned in for grading in this course must be your own work. Some laboratory assignments may be done, in part or in whole, by teams of two students, in which case the submitted material must be the work of only those team members. Such assignments will contain clear and explicit instructions identifying them as team assignments. In the absence of any such explicit statement, any graded work must be performed by the single individual who submits it for grading.
The instructor reserves the right to to question a student orally or in writing and to use his evaluation of the student's understanding of the assignment and of the submitted solution as evidence of cheating. Violations will be reported to Student Judicial Affairs for consideration for punitive action.
By CS Dept. policy, students found to be in violation of this rule
will, at the very least, receive a failing grade in the course and may
be subject to stiffer penalties. Students who contribute to violations
by sharing their code/designs with others may be subject to the same
penalty. Students are expected to use standard Unix protection
chmod) to keep their assignments from being
read by their classmates. Failure to do so will result in grade
This policy is not intended to prevent students from providing legitimate assistance to one another. Students are encouraged to seek/provide one another aid in learning to use the operating system, in issues pertaining to the programming language, or to general issues relating to the course subject matter. Student discussions should avoid, however, explicit discussion of approaches to solving a particular graded assignment, and under no circumstances should students show one another their code for an ongoing assignment, nor discuss such code in detail.
Attendance at lectures is not generally required, but students are responsible for all material covered and announcements made in class. Consequently, if you are going to miss class, be sure to get notes, handouts, etc., from another class member. If you miss your lecture section, you may attempt to attend the other instructor's lecture. However,
your ability to do so is subject to availability of seating in the classroom.
because one course section meets 3 times a week and the other one twice a week, 1-to-1 synchronization of the two lecture sections is not possible.
Each week, the course calendar will show a lab, an assignment, or both. Unless explicitly stated otherwide, attendance at laboratories is required. Lab activities are not always graded, but are often intended as an introduction to or practice in technqiues that you are expected to employ in the week's assignment. Failure to attend may result in point deductions from the week's assignment.
If you miss your lab section, you may attempt to attend a later one. Again, however, your ability to do so is subject to availability of seating and machines in the lab. If too many people show up, the TAs will insist that students registered for that section get preference.
Recitations will be used primarily to review the solution to the prior week's assignment and to provide help on the the assignment for the current week.