Table of Contents
This course covers basic C++ programming and the software development issues that arise in practical programming projects. Topics include C++ syntax and semantics, principles of design and basic software engineering skills.
This course satisfies the requirements of both CS 150 and 250. It is intended for the student who has already been introduced to programming, possibly in another programming language. Students who lack prior programming experience may attempt the course, but they should be aware that, because this is an accelerated course that covers the equivalent of two other courses, students may find that this course requires far more work than a normal single course.
This is a web-delivered course with no scheduled class meetings, except for a few meetings conducted via network conferencing. These will be recorded for the convenience of students u7nable to attend "live".
This course offers students considerable flexibility in scheduling their work, but students without the maturity to take advantage of the available learning resources or the self-discipline to maintain a regular work schedule run the risk of falling too far behind to succeed.
The course is divided into three major parts. Part I corresponds roughly with the portion of CS150 that does not overlap with CS250. The emphasis here is on the basic C++ language. For this mostly technical material, your major source of information will be the textbook.
Parts II and III correspond roughly to CS250. Although new C++ language features continue to be introduced, the emphasis in these sections is to place the process of writing code within the larger context of programming, where coding is preceded by design and followed by testing and debugging. In these parts of the course, you will find that a much higher portion of your information comes from the instructor's lecture notes, which attempt to give a sense of perspective that the text, with its narrow emphasis on the C++ language itself, lacks.
Within each part of the coruse are several topics. Each topic is addressed by readings (from the text or the online lecture notes) and accompanied by a variety of activities including:
Self-tests - ungraded online quizzes
Labs - ungraded activities that introduce or practice techniques that you will use in the assignments
Assignments - graded activities, most of which involve programming
In addition, there will be an exam at the end of each of the three parts, with the final exam after part III being cumulative.
There will also be a semester "term" project in which you will apply the techniques of design, coding, testing, and debugging to a larger problem than is tacked in the assignments.
This being a web-course, you have considerable freedom in scheduling your time. You need to take care, though, to keep up the pace (and, because this is an accelerated course coviring two semesters' worth of material, that pace will be challenging).
There are a few hard due dates in the course.
The dates for the three exams are fixed.
The assignments in each of the 3 parts of the course are due before the exam at the end of that part.
Because the semester project is submitted in phases, with the intent of providing you with feedback as you move into the next phase, there is a fixed due date for each phase of the project.
So basically you can choose what days of the week to work on and what times of day to work, but you cannot choose to defer all the work to the last month of the semester.
Malik, C++ Programming: from Problem Analysis to Program Design, 4th Edition, 2009, Thomson Course Technology
This book is frequently sold with accompanying CDs. We won'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!
The prerequisites for this course are:
CS 150, Problem Solving and Programming I, or an equivalent programming any high-level programming language,
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 CS333 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 "weekly" assignments and a term 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.4 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 or via the CS Dept's Virtual PC Lab. If you like, however, you can obtain the g++ compiler for free from a variety sources. Links will be provided on the course page.
Students will need an account on the CS Dept. Unix network to participate in this class. This account is unrelated to any University-wide account you may have from the ODU's computing services (OCCS).
If you have had a CS Unix account in the recent past, you should find it still active with your login name, password, and files unchanged. If you have had an account and it has not been restored, contact the CS Dept systems staff in the lab in Dragas Hall, Room 1111K or email email@example.com requesting that it be restored.
If you do not yet have such an account,follow these directions to get set up. (New account creation for students enrolled in a future semester becomes available about one week before the start of that semester.)
|Kamal Al Nasr|
|iSTART Lab E&CS 3320||voice: (757) 683-7769|
|firstname.lastname@example.org or email@example.com|
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
Assignments will be turned in through the CS submission system, rather than through Blackboard - more information will be fopund on the course website. Most of the assignments will be graded by an automatic grader. The results will be sent to your CS email account. Unless the assignment explicitly states otherwise, you may submit a total of three times per assignment; the instructor will take the highest of the marks. You may NOT submit after viewing the sample solution.
All non-project work is due prior to the date of the exam at the end of the Part of the course in which they are given. Late submissions of assignments from part I or Part II will be accepted during the following part, subject to a 25% penalty.
Late submissions on the portions of the semester project 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.
Everything turned in for grading in this course must be your own work.
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 the Honor Council 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 programming assignment, and under no circumstances should students show one another their code for an ongoing assignment, nor discuss such code in detail.
 Not that this textbook is particular unusual in that respect. Pick up almost any programming textbook, turn to the index, and look up the terms "design", "testing", and "debugging" and note what a small percentage of the total pages in the book are devoted to these activities. Then reflect on the fact that these activities typically account for the lion's share of most programmers' time, with actual code writing coming in a distant fourth.