Fall 2004

CS 213 Information

 

Announcements

Class Staff

Class Information

Lectures

Assignments

Grades

General Information:
CS213 (C++ Programming) is a course designed to give you a complete tour of the C++ programming language. We'll learn all about the syntax of the language and cover some object oriented programming topics as well. Please view the syllabus for more details. There is no specific prerequisite for the course other than prior programming experience. Those students who have been through CS100 will certainly qualify; those who have not should contact the instructor to make sure they have appropriate prior experience.

The course meets Tuesdays and Thursdays from 12:20PM to 1:10PM in room 110 Hollister, and is being taught by Ron DiNapoli (rd29@cornell.edu).

More Specific Info:
CS 213 is listed as a 2 credit S/U course. To fully cover the C++ language, however, we must give a certain number of assignments, tests and projects which may make the course feel more like a 4 credit course at times. On this page we will discuss specifics about the following topics:

 

Your Grade

Your course grade will be made up of the following components:

Assignments

40%

Prelim #1

20%

Prelim #2

20%

Final Project/Exam

20%

You will receive numeric grades on all assignments, tests and your final project. There will be 12 assignments--each assignment covers a different area of the C++ language. It is to your benefit to put your best effort into all of them. All assignments, the prelims, and your final project will be graded on a scale of 0 - 100 points. The lowest two assignments are dropped.

Your final numeric grade will be calculated with the following formula:

(Assignment Average * 0.4) + (Prelim1 * 0.2) + 
(Prelim2 * 0.2) + (Final Project/Exam * 0.2)

A grade of S will be given to those students with a final numeric grade of 70 or above. A grade of U will be given to those students with a final numeric grade of 69 or below.

 

Assignments

Assignments will be given out every Thursday to be turned in at the beginning of class the following Thursday. I do understand that sometimes things come up which interfere with your ability to finish assignments on time. You will therefore be permitted to turn in assignments by 8am the Friday after they are due (at a location to be determined). Assignments will not be accepted after this time and you will receive a "0" grade for any assignment not turned in on time.

Except for the final project, all assignments will be handed in on paper. When submitting an assignment you should include a 1 - 2 page write-up followed by a listing of each file containing source code that you wrote to solve the problem. All source code submitted as part of your assignment should contain your name and the assignment number in a comment at the top of your source code. Finally, the last page of your assignment should be a printout of your program demonstrating the solution. There may be exceptions to this requirement and they will be noted when an assignment is given. The purpose of the writeup is to get you used to documenting the work you do (another one of those "real world" things that is important). Remember that you are submitting a solution, not just a program. While I will not assign a formal format for the write-up, it should touch on some of the following:

  • What is the problem you are solving?
  • How did you solve it?
  • Why did you solve it this way (applicable only if there are multiple ways to solve a given problem)
  • What have you learned?

If you are still confused, check out this sample assignment which is, of course, fictitious.

Assigments can receive a maximum of 100 points. 10 of those points come from your write-up. You get 5 points just for trying and the remaining 5 will be awarded based on how well you communicated what you did in solving the assignment. Assignments turned in with no write up will automatically lose 10 points. You also receive 5 points just for turning the assignment in on time. The remaining 85 points are awarded for solving the assignment correctly according to concepts covered in lecture. In general, you'll lose some points for solutions that work but weren't done correctly given the concepts the assignment is covering, and you'll lose more points for mistakes in code.

A word about comments

I am not going to require that every line of code you write be commented. I will strongly suggest that most lines of code have comments, especially where it might not be clear what you are doing just by looking at it. You stand to lose a few points for not commenting enough.

 

Code Warrior, XCode, GCC, and Visual C++

Another "real world" issue is that even though there is a C++ Standard, not all compilers implement it exactly the same way. Also, compilers and/or their corresponding development environments may have bugs which may cause them to function in ways that differ from what you read in the book and/or see in lecture. Despite this, I will allow you to use Code Warrior, XCode, GCC or Visual C++ to complete assignments. If there is another development environment I'm not including that you feel should be allowed, please let me know. I will be using XCode in class and will make sure all demos and concepts covered are properly functioning in that environment. You may find that other compilers might yield slightly different results on rare occasions.

I will assume that you will be able to choose a compiler to use either by what you already have access to or what is available in the CIT labs. I've asked CIT lab personnel to make XCode available on all CIT/MacOS lab machines, and CodeWarrior Version 8 should still be available on all Windows CIT lab machines. If you have access to the CSUG lab in Upson you may find that Visual C++ is available--however your enrollment in CS213 will not get you access to the CSUG lab if you don't have it already. Finally, those of you with access to a UNIX/Linux system with GCC will be allowed to use that system, but depending on how old an implementation of GCC you are trying to use is you may have difficulties with some of the more advanced topics such as templates and exceptions. If such difficulties arise you may need to use one of the other compilers.

If anyone has difficulty locating a compiler to use please contact me.

 

Lectures

You are encouraged to attend all lectures. As the course progresses there may be material covered in lectures that does not appear in the text. While I will make every effort to post all lecture notes on the web site there is no substitution for being present in class when concepts are discussed. It also gives you the chance to ask questions you might not otherwise think of when you do not come to lecture.

 

Relax

WOW... That was a lot of information. The course won't be nearly as scary as I may have just made it seem. The book we will be using offers an easy-going approach to learning C++ which I hope will make this course an enjoyable experience. I will do my best to conduct lectures and give assignments in a similar fashion. This does not mean that this class will magically be easier than it has been in the past... the goal of teaching every corner of C++ remains one that will require a lot of work on both of our parts. Hopefully we'll be able to make it something you look forward to every day (well, OK, maybe every other day). I'll see you all in class...