CSCI 1730:  C++ and Systems Programming (Spring 2004)

Quick Links

 Class mailing list home page

 Lectures

 Course Text

 Grading Policy

 Class Schedule

 Programming Assignments

 Late Work

 Exams

 Academic Honesty (important)

 Withdrawals and Incompletes

Course Overview

This course will cover  C++ and systems programming. Specifc topics within C++ include: Within systems programming, we will cover:
Note that this document can be found  at http://www.cs.uga.edu/~dkl/1730/Spring04/syllabus.html.

Lectures: TTh 2-3:15, and W 2:30-3:20; all days in Hardman Hall 101

Final Exam: Tuesday, May 4, 3:30-6:30pm

Instructor: David Lowenthal

Office: GSRC 219C, 542-9269

I am a faculty member in the Computer Science Department at the University of Georgia. My main areas of research are parallel and distributed computing, operating systems, and mobile computing.

Email: dkl@cs.uga.edu

CSCI 1730 email: We will be using a listserv for the class mailing list.  To sign up for the listserv, go to this address.  To send email to the list, send mail to sysprog@greenhouse.cs.uga.edu.

Where to send email:   Unless you are asking a personal question that you only want me to read (e.g., you are very sick, you have a situation that warrants a deadline extension, you want to know about your grade), please send email to the class account.

Note on email questions:   If you are asking a question regarding one of the programs, you must include in the message how you have tried to solve the problem you are emailing about.  Otherwise, we will not be able to help you.

Office Hours: T 12:15-1:45, W 8:30-10, and by appointment

Office hours are for you. Please do not hesitate to come to my office. Office hours will usually be very busy right before an assignment is due; if you start the assignments early and come to my office well before they are due, you have a better chance of avoiding the rush. Due to my busy schedule, I cannot accept drop-ins outside of office hours.

I will also be available by appointment; please send me email to set one up. Please note that I will not be able to accept all requests for appointments, especially around program due dates. If you do wish to see me outside of office hours, you need to make an appointment. I am more likely to accept appointments on Tuesdays and Thursdays --- Mondays and Fridays are my research days.

Finally, please keep in mind that office hours are not a substitute for missed lectures.

There is one additional rule with regard to office hours: I will not help any student that is not using some kind of debugger.  For example, if you come in to obtain help with a segmentation fault that you are trying to debug, and you cannot answer the question "On what line is the program crashing?", I will not help you.  Note that we will cover how to use a debugger in class --- it is not hard.

TA: Bryan Veal

Email: veal@cs.uga.edu

Office Hours: M 1:30-3, W 10:30-12, GSRC 301

Prerequisite: CSCI 1302

The course is nearly full, and there are students trying to add this course.  So if you do not have the prerequesite, I will be forced to drop you from the course.

Reading Materials

The required textbooks for the course are C++: How to program by Deitel and Deitel, as well as UNIX Systems Programming by Stevens. You will be expected to read any assigned material. We will not be able to cover all assigned reading in lecture. Please note, however, that you are responsible for any assigned material. Specifically, exam questions covering reading material are fair game.

Note also that this class requires that you learn C++, with the assumption that you already are proficient in Java.  We will be moving quickly through the syntax of C++, with a lot of reading assigned.  You will be expected to keep up.  Doing the reading will be a big part of this.

Lectures

Attendance at lectures is optional. You are, however, responsible for all material covered in lectures. We will often be discussing material different from the textbook. I feel that the lectures are the course; I will do my best to make them interesting. I believe that you won't just be able to read the notes and succeed.

You should come to lecture prepared. Ideally this means you have read the assigned material in advance. I am aware that this will not always be possible -- at least review the previous lecture.

"Lecture" is really a misnomer. Ideally, we will have a discussion as opposed to me just lecturing. Please do not hesitate to ask questions; you might think your question is dumb, but more likely, many people are wondering about the same thing.

Several of the lectures will be PowerPoint slides designed by the authors of the course textbook. To download them (modified by me), click here.

Grading

Grades will be assigned on the usual A-F basis. Grading will be absolute; there will be no "curve". Achieving a 90% will guarantee an "A", 80% a "B", and so on. However, when the final grades are given, it could be the case, for example, that an 85% gets an "A". Do not confuse this with a curve, however. If everyone does A work (as I hope), everyone will get an A. If everyone does C work, everyone will get a C. So that you know your grade at all times, four fictitious students will be given grades for each assignment and exam. These students will be named "Min A", "Min B", etc., indicating the minimum score for each grade. Graduate students will be graded on a different scale than undergraduate students.

There will be several  programming assignments, a midterm, and a final. Their approximate weights will be as follows:

Please note that these are tentative. Relative weights of assignments can change, although I would expect them to end up fairly close to those listed above. Also, you will not pass the course with a grade of C or better unless you get a C or better on one of the exams.  Please understand what this means---if you get all A's on the programs, but fail both of the exams, you will not receive a passing grade in the class.  Note: I do not expect this situation to arise.

Important: Your grade will be the one you earn.  If you need this class to graduate, I suggest that you earn a C or better.   Under no circumstances will your graduation status, visa status, or HOPE status affect your grade.  This includes situations like: (1) your parents are coming for graduation, (2) your relatives are flying in from halfway around the world for your graduation,  (3) you have a job lined up and have to start immediately, (4) you got all A's up to this point, and you have never received a grade below a C, and/or (5) you will have to leave the country if you do not achieve a certain grade.

Class Schedule

The class schedule will be updated quite often; you should reload this page often. Please note that due dates can change, although they will never be made earlier.

Reading Assignments

It's a good idea to read the assigned material before lectures. You can find the material that will be covered in each lecture on the Class Schedule page.

Programming Assignments

Please note that many assignments in this class build on previous ones. This means that it is vital that you correctly implement each assignment. You will not be excused from assignment N just because you did not get assignment N-1 to work correctly. Further, it is likely that some of the test cases will be exactly the same from project to project.  In my experience teaching this course, I have found that the most common reason for students struggling is getting behind in the projects.  Do not let this happen.  Links to the programming assignments can be found on the Class Schedule page.

Your projects will be tested by the TA or me. Test cases are generally pass (full credit) or fail (no credit). This means that if you fail every test case, you will get a zero on the assignment (it is possible that a few points will be given for programming style, etc., but your score will be very poor nonetheless). You are responsible for testing your programs to ensure their correctness. Note that just getting the program to compile is not enough; similarly, just getting the program to pass a few test cases is not enough. You are welcome to share test cases; this is often the best way to ensure that your program works.  Note that if your program does not compile, your score will be zero.

It is sometimes the case that one small bug caused a disproportionally large number of test cases to fail. In such a case, you may be eligible to correct your mistake and get some of the points back. See me if you believe you have such a case.  Note that there is a minimum penalty for the bug, which is always at least 10 points per bug.  So, if you had 2 bugs that caused you to lose 15 points, you are not eligible to receive any points back.

A tentative list of programs to be assigned is:

  1. Warmup C++ Program
  2. "Getting Used to Pointers" Program
  3. List Package
  4. Template List Package
  5. Overloading/Inheritance assignment
  6. Shell (will be divided into several assignments)

Late Assignments

All assignments are due at the start of class.  Please note: if your assignment is even one second late, it's late, without exception.  You will have to turn the assignment in before the time it is due.  I will not say "you missed by 1 minute, so it's ok."  Note that in prior years, I have given zeroes to people that are just seconds late. There will be no exceptions, including the case where your DSL, cable modem, or dialup connection from home fails to work. Furthermore, you will have to understand that the turnin program on atlas is not instantaneous, so if you wait until one minute before the program is due and the turnin program takes over a minute, the program will be considered late. I will try to schedule assignments around the due dates of other computer science courses.

Please start early on programming assignments. I will warn everyone of this several times, but surely people will ignore these warnings (computer scientists, by nature, are procrastinators). However, the fact remains that in the real world, there is a penalty for lateness, unless you happen to be working for Microsoft. One suggestion: if you think that you can do a program in 3 days and you have 2 weeks to do it, do it during the first three days.

If you are sick and have appropriate documentation, always let me know as soon as you get sick. It will be to your disadvantage to tell me after the fact that you were sick; you may not be excused from the regular due date.

Please keep in mind that social events (e.g., fraternity/sorority parties, football games, all-night Quake contests) are not acceptable excuses for late work and will be immediately rejected.   You probably think that no one would ever use such excuses, but if you did --- you would be wrong.  On the other hand, if you have a conflict that is school sponsored (and academic to some extent), I will consider but not necessarily grant a request for an extension.

Note that scheduled downtimes are not an excuse for late work.  The systems go down once a month for backups, for a total of a few hours.  That is not a hardship. However, if there is an unscheduled downtime for a significant period of time, I will make an adjustment in the due date --- as long as the downtime occurs close to the due date.

Exams

There will be one midterm and a final. The exams will be open book and open notes; however, you may not bring in any other books besides the course text. The exams will not be simple regurgitation of the material covered in class; rather, they will be designed to see if you understand the material.

Without prior arrangement, any missed exam will result in a grade of zero. This includes the final --- do not plan a trip assuming that I will change your final exam date, because I will not.

Cheating

Cheating will not be tolerated in this class. You are allowed to discuss the programming assignments with other students. However, these must be general discussions. For example, discussing the need for using pointers is perfectly fine; however, telling one exactly how the pointers are used is not.  Any duplication of even one line of code is a violation of the academic honesty policy.  If you have any doubts about what you are doing, ask me. I hand over all cheating cases directly to the Academic Honesty department. Their punishment, if you are found guilty, carries with it a minimum of a failing grade on the assignment and a transcript notation; the latter item will certainly hinder your efforts to find a good job. This means that if I catch you cheating, you're not just going to get away with an F on that assignment; the punishment is much stricter than that. So, simply put, don't cheat.

 If I catch you copying code, I will do my best to make sure you get the harshest penalty possible, including expulsion from the university. Note that the last time I taught CSCI 1730, 5 out of the 40 students were caught cheating. If you cheat, we will catch you. Note also that copying code from the Internet is also strictly prohibited.

Please note that unfamiliarity with the rules and regulations of the academic honesty environment at the University of Georgia will not be grounds for leniency. In other words, if you come from a background where collaborative work is the norm, you must realize immediately that it is not allowed in this class, unless cleared by me first.

Withdrawals and Incompletes

You may drop the class during the first four days without an annotation ending up on your transcript. Thereafter until the drop day, you may drop the class with an annotation. An incomplete will only be considered in a case where there is a documented medical evidence and you are making satisfactory progress in the course. If you have a medical emergency and are not making satisfactory progress after the drop date, you may be offered a late withdrawal; this is up to the instructor.

Warnings

First, you are responsible for reading and understanding this entire syllabus. I will hold you to the rules set forth within this document. Second, any computer science programming course involves a significant amount of work. This class will have more work than most computer science courses. If you do not feel you have the time to spend, you may want to think about taking a different course. Ask previous students about the workload in this class. I expect you to treat this class professionally.

Dissemination of Information

I will be using the Web as much as possible for this course. Handouts will be rare. All lecture notes will be on the Web.

Class announcements, such as due date and assignment changes, will be made by email notification and/or on the Web. You are therefore responsible for checking these two places. If you make an error because you did not check the Web and your email, I will hold you fully responsible.

You must sign...

You must sign the statement below and return this document to me. Failure to return this document by Wednesday, January 14 will result in your forced withdrawal from the class.

By signing at the bottom of this document I state that I have read the entire syllabus and agree to abide by its terms.

Signed: