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