`G E O R G E T O W N   C O L L E G E`
CSC215 Spring 2010 Syllabus

CSC215 Computer Science II [ https://scholar.georgetowncollege.edu ] MWF 11:00am-11:50am, Asher 102
Dr. Danny Thorne (dthorne0), Asher 121, 502-863-8362, http://www.georgetowncollege.edu/Departments/mpc/thorne/

Course Description Introduction to data structures such as linked lists, stacks, queues, trees, more general graphs and heaps using static and dynamic representations. Use of multi-dimensional arrays and recursion. [Instructor's note: An emphasis of the course will be on learning C++, understanding abstract data types, and practicing object oriented programming in the context of C++.]

Text Main and Savitch, Data Structures and Other Objects Using C++, Third Edition. We will plan to cover chapters 1 through 10 and 14 (6 and 14 covered lightly). Some material from chapter 11 may be covered if there is time. See the authors' online material: `http://www.cs.colorado.edu/~main/cs1300`  , `http://www.cs.colorado.edu/~main/projects`  .

Grading Categories and weightings: Projects 0.55, Exam One 0.15, Exam Two 0.15. Final 0.15. Numerical scores between 0 and 1 (0% and 100%) are computed for assignments, quizzes and exams by dividing the total number of points earned by the total number of points possible. Scores for categories are computed by averaging the individual scores in the categories. The score for each category is then weighted according to the above weights to give an overall course score between 0 and 1. The overall score for the course is then mapped to a letter grade for the course as follows: ``` [0.925,1.000]-->A, [0.875,0.925)-->AB, [0.825,0.875)-->B, [0.775,0.825)-->BC, [0.700,0.775)-->C, [0.600,0.700)-->D, [0.000,0.600)-->F ```.

Projects Programming projects will be assigned and collected regularly. Projects should be completed independently by each student (see the Honor System section of the Student Handbook http://www.georgetowncollege.edu/studentlife/handbook.pdf). That doesn't mean you cannot discuss concepts related to assignments with each other, but you need to do your own work. If you do discuss aspects of an assignment with others in a way that helps you understand how to complete part(s) of the assignment, cite them on your assignment submission (i.e., provide their name and how they helped you). If you have to turn in homework late, provide a documented reason.

Always include a `main()` routine that demonstrates all of the aspects of the assignment. If you are unable to get parts of the program working correctly, have your code output an explanation. You will be docked for any part of the assignment that is not demonstrated when I compile and run your code. Of course, you will be docked if your code does not compile. Comment out anything that makes your code fail to compile or that makes your code crash and have your code output an explanation of what is missing and why.

Always provide a file named `output.txt` that contains the output from a run of your code. You can obtain this by the the command ```a.exe > output.txt```. Substitute whatever your executable file name is if not `a.exe`. Note that we will not write interactive programs in this class. All user input will come either from the command line or an input file.

Submit homework via email. When we start writing programs involving multiple files, put the files in a folder, zip the folder and email the zip file to me. In Windows, you can zip the folder by right clicking on it and selecting "Send to" a "Compressed (zipped) folder". (The phrasing might be a little different in Vista, but I think it is about the same.) In Cygwin/Linux you can zip a folder with the command ```zip -r FolderName.zip FolderName/``` .

You will learn to compile code via a unix-style command line (e.g., http://www.cygwin.com, http://www.mingw.org/) in this class, and you will learn to edit code in a "hardcore" programmer's text editor (http://www.vim.org).

Exams Tentative, approximate dates for the midterm exams are late February for Exam 1 and mid April for Exam 2. The first exam will probably be a take-home programming project. The second exam will probably be a selection of the self-test questions from the book. More details will be provided as the dates approach. If you must miss an exam and want to make it up, arrange it with me at least a couple of days before the exam date, and provide a documented reason for missing.

The Final Exam is scheduled for Wednesday, May 12, 9-11am. However, we may have a final project instead of an in-class exam. If so, the due date for the final project would be May 12th at 11am, the end of the scheduled final exam period.

Attendance Your attendance will be monitored. There is no explicit category for attendance in the grading scheme for the course. However, missed exams and homework will affect your grade. Furthermore, attendance will flavor my decisions about borderline scores at the end of the semester.

Office Hours My office hours ( M 3:30p-4:30p, T 1:30p-2:30p, W 3:30p-4:30p, R 1:30p-2:30p ) are posted on my door and on my web page. They might change, so check my door or the web page to confirm. I am at your disposal independently of office hours. You may call ahead, make an appointment, or just drop by and see if I am available. If I am unavailable due to work-related business when you drop by, I will tell you; otherwise, I am happy to see you anytime.

Coding Style Conventions
• Line width: 80 chars (including documentation)
• Indentation size: 2 spaces (No tabs!)
• No trailing white space in your code.
• Always use scope symbols `{ }` even when not technically necessary.
• File names for classes should correspond to the class name.
• Use the extension `.cc` for C++ files (`.h` for headers).
• Do not use white space in file names or folder names!
• Get in the habit of using the `const` qualifier wherever it is appropriate.
• Double literals need decimal points. Int literals do not have decimals.
• Do not indent the bodies of namespaces.
• There are exceptions to some of these rules.