Go up to the main UVa page (md)
Instructor: Aaron Bloomfield (aaron@virginia.edu). Office is Rice Hall, room 403. Office hours are M/W 1:00-2:30 and other times by appointment
Pre-requisites: This course requires completion of CS 2150 with a grade of C- or above.
Reading: Due to the rapidly changing nature of this topic, there is no assigned textbook -- the best textbook on the topic is already 5-10 years out of date. Readings will consist of handouts, online materials, and articles (both media and scholarly). Much of the background for this course depends on completing the readings. Thus, occasional pop quizzes will happen to ensure that everybody is doing the reading (and to ensure that people are showing up to class!).
Grading: There will be one midterm (15% of the grade, on Wednesday, October 11th) and a final exam (25% of the grade, on Friday, December 15th at 9 a.m.). The homework assignments will constitute 50% of your grade. Attendance in class is noted. Participation will be the remaining 10%; participation will consist of in-class pop-quizzes, attendance, etc. Excessive unexcused absences from class is grounds for receiving a lower (or even failing!) grade. I reserve the right to adjust the percentages based on the number of assignments and quizzes, and other factors.
Assignments: There are expected to be one assignment every 1.5 weeks, on average. Some will be shorter and easier, some will be longer and harder. There will be both programming assignments as well as occasional pencil and paper assignments.
Course rules: You are fully responsible for all material presented in class. Exams and due dates are scheduled in advance. A grade of zero will be recorded for missed exams and late assignments unless prior arrangements are made. Assignments turned in after the due date are penalized 25% per day (or fraction thereof) late; this means a maximum of 3 days (i.e. 72 hours) late. You are free to develop assignments on any platform/OS you wish. However, you are responsible for porting your code to the system the class is using and ensuring that it runs correctly for us when we grade your assignment. Our reference system will specified for each assignment, but will generally be Ubuntu Linux. Some assignments will be graded by automated unit testing.
Cheating: Students are encouraged to discuss programs and assignments in general. However, helping others find bugs in existing programs, using another person's code, or writing code for someone else is cheating and a violation of the University’s Honor System. Basically, you should not be looking at another person's code for ANY reason (obviously you can after BOTH have submitted the assignment, or if there is a group project). This includes consulting solutions to assignments from previous years or tests from previous years. Any honor violation or cheating will be referred to the honor committee, and will result in an immediate failure for the course, regardless of the outcome of the honor trial or your other grades. No exceptions! I am very strict on this, and one have successfully raised honor charges against students in the past due to violations of this policy - and I've blocked people from graduation because of honor offenses.
Course Objectives:
Syllabus: The following is the list of topics we expect to cover. The order we will cover them in depends largely on the homeworks – while we generally expect to cover the material in the order provided, the primary objective is to have the topic covered around the time the homework is assigned.