CS 333: Syllabus (Summer 2017)

Steven Zeil

Last modified: Jun 11, 2020
Contents:

1 Basic Course Information

1.1 When and Where

This course is online and has no regularly scheduled lectures. There will be a limited number of attendance-optional network conferences (announced on the website).

1.2 Objectives

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

1.3 Required Text

Malik, C++ Programming: from Problem Analysis to Program Design, 7th Edition, Thomson Course Technology, ISBN 1285852745 8-1285852744

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!

2 Communications

2.1 Instructor

Steven Zeil E&CS 3208
(757) 683-4928 szeil@odu.edu

Make sure to include the course name CS333 in the subject line of any email related to this course. Messages with that in the subject are flagged by my email program for faster attention and are less likely to be lost amid my daily dose of spam messages.

2.1.1 Office Hours

Students may meet with the instructor in person, by telephone, or via internet-conferencing. A week-by-week schedule of available meeting times can be found online at http://www.cs.odu.edu/~zeil/officehours/ or by going to the instructor’s home page and clicking on “Office Hours and Appointments”.

General questions about course content and reports of website problems should normally be asked in the Forums on Blackboard.

Questions about grades, how to solve assignments and other graded activities should be send to szeil@odu.edu.

For more discussion on course communications, please refer to the Communications policy.

3 General Organization of the Course

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

Within each part of the course 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:

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 tackled 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 covering two semesters’ worth of material, that pace will be challenging).

4 Course Pre-requisites and Co-requisites

The prerequisites for this course are:

The co-requisite for this course is:

5 Assignments

Assignments for this course will include numerous small assignments and a term project. Both may involve programming in C++.

5.1 C++ compiler

The “official” compiler for this course is the Free Software Foundation’s g++ (also known as gcc or GNU CC), version 4.8.4 or higher. This is the compiler that the instructor will use in evaluating and grading assignments and projects. If you have access to other compilers, you may use them, but you are responsible for making sure that your code 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. (The co-requisite course CS252 will help with that.) Please do not 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 Linux 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 Library page.

5.2 Computer Accounts

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

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 at root@cs.odu.edu 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.

5.3 Testing, Debugging, and the Auto-Grader

Testing and debugging are an integral part of programming, and you are expected to test your code properly prior to submitting it.

The amount and quality of testing expected will increase as the semester progresses, because this course teaches testing techniques that will be useful. Similarly, you will be learning debugging techniques as part of this course and will be expected to show more sophistication in your own debugging as the semester progresses.

We don’t teach these just to pad out the semester. You are expected to use the testing and debugging techniques introduced in the course after they have been presented.

Most assignments in this course are graded automatically. You submit your code via a webpage, and within an hour or so, receive an email message with a report indicated whether your code compiled and how many of the instructor’s tests you may have passed.

6 Course Policies

6.1 Due Dates and Late Submissions

There are a few hard due dates in the course.

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.

All assignments (not including the term project phases) are 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 20% penalty. Late submissions will not be accepted afterthe due date for part III.

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 have fallen behind and can’t catch up”, “I am 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.

6.2 Academic Honesty

Everything turned in for grading in this course must be your own work.

Students are expected to conform to academic standards in avoiding plagiarism.

The instructor reserves the right to question a student orally or in writing and to use this evaluation of the student’s understanding of the assignment and of the submitted solution as evidence of cheating. Violations will be reported to the Office of Student Conduct & Academic Integrity for consideration for possible punitive action.

Students who contribute to violations by sharing their code/designs with others may be subject to the same penalties. This includes showing material to other students in person and posting code and designs in any public area, whether physical or on the internet. Students are expected to use standard Unix protection mechanisms[^You will learn about these in the co-requisite course, CS252.] to keep their assignments from being read by their classmates.

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. The same guideline applies to discussions, whether face-to-face or on-line, with anyone other than the course instructor and TAs – general aid on the subject matter of the course is OK. Specific discussions of solutions to any graded activity are forbidden.

Students must avoid explicit discussion of approaches to solving a particular programming assignment. Under no circumstances should students show one another their code for an ongoing assignment, nor discuss such code in detail.

Use of Online Resources

You may not post details of course assignments, projects, or tests at online Forums, Bulletin Boards, Homework sites, etc., soliciting help.

You may use information that you have not solicited but have located, subject to the following restrictions:

6.3 Grading

Assignments: 45%
Semester Project: 20%
Exam 1 10%
Exam 2 10%
Final Exam: 15%

Read these further notes on grading for a detailed explanation of how grades are computed.

7 Educational Accessibility

Old Dominion University is committed to ensuring equal access to all qualified students with disabilities in accordance with the Americans with Disabilities Act. The Office of Educational Accessibility (OEA) is the campus office that works with students who have disabilities to provide and/or arrange reasonable accommodations.

The Office of Educational Accessibility is located at 1021 Student Success Center and their phone number is (757) 683-4655. Additional information is available at the OEA website http://www.odu.edu/educationalaccessibility/


1: Not that this textbook is 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 consider 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. Almost all programming textbooks have always given short shrift to the non-coding aspects of a programer’s job.