CS197C Syllabus
Course Description
General information about the course can be found here.
This course is a brief introduction to the C++ programming language for students with a good working knowledge of Java. Students are expected to have edlab accounts.
More specifically, We will be covering most of the features of the C++ language. Some of the topics
we will cover include C++ datatypes, object-oriented features, libraries (the STL), memory management, and some advanced topics.
Important Note: Although this course is only one credit and only meets for eight weeks, it is more on the order of a "boot-camp"
course rather than a "seminar" course, and as such will be difficult for the unprepared. This is much more a property of the course
material rather than my teaching style - learning C++ consists of not only learning a new programming language, but learning a
programming language with a huge number of features and a programming model that is lower-level (i.e., closer to the machine) than many
of you may be used to. You will also have to learn to use a number of tools such as make and gdb that you may not have
been exposed to - some of these will be vital if you are to successfully complete the assignments.
Pre-requisites
CS121 and CS187 or permission of instructor. More specifically, I expect you to have programmed in some language like C, or Java.
You should also have some exposure to some data structures and algorithms in order to able to solve the assignments.
TENTATIVE Schedule
| Class # | Date | Topics
|
|---|
| 1 | Jan 28, 2009 | Introduction, Compilers/Debuggers, Basics
|
|---|
| 2 | Feb 4, 2009 | Data types + Functions
|
|---|
| 3 | Feb 11, 2009 | Pointers + References
|
|---|
| 4 | Feb 18, 2009 | Classes Basics
|
|---|
| 5 | Feb 25, 2009 | Advanced Class topics - Overloading + Inheritance
|
|---|
| 6 | Mar 4, 2009 | Pointers Again
|
|---|
| 7 | Mar 11, 2009 | Standard Template Library (vectors+queues+stacks+maps)
|
|---|
| 8 | Mar 25, 2009 | C++ Advanced topics + Conclusion
|
|---|
Grading
- 90% Homework
- 10% In-class Quizzes
Policies and Procedures
- Quizzes:
- To ensure prompt attendance and make sure you do the reading, I'll be giving a very short quiz randomly distributed throughout the lifetime of the course.
- These quizzes will cover the material that has been already taught till then, so if you do the reading and concentrate on the Key Points at the end of each class, you should be in good shape.
- I will also drop the lowest quiz score for your final grade.
- Class discussions
- This is your opportunity of make up for a bad homeworks and quiz. There would be at least one discussion session every class. I
would give out a well defined assignment which you guys have to try and solve in 15 mins. You would be asked to make groups of at least
2 to discuss/solve the assignment. After 15 mins we will discuss the solution and try to together figure out the correct and most
efficient solution.
- Here is the good part - I will grade the discussion sheets and each group (member of each group) This grade will count as extra
credit at the end of the course and will help bump up your final grade.
- Homeworks:
- The homeworks are the core learning tool from this course. Therefore, they will entail most of the work.
- You can download the homework assignments from the course webpage.
- Programming assignments will range from a simple "Hello, world!" program to a non-trivial C++ application using most, if not all,
of the language features discussed in class.
- The assignments will be posted the day of class, and due at the beginning of class next week.
- You will need an EdLab account for this course. These accounts will be used to hand in your assignments, and the computers contain
all of the tools you will need to compile, run, and debug your assignments. You may, of course, use other environments with the same
tools (such as any flavor of Linux or Cygwin) to create your assignments, but the final result must run correctly on the EdLab machines.
- Assignments will be automatically collected by me on the due date. Make sure you leave your assignments in your EdLab accounts
for this course, and make sure your permissions are set appropriately so I can access your files. Detailed instructions will be
provided with the first assignment.
- I may, depending on the assignment, provide you with a reference implementation of the assignment in executable form that you can
use to compare with your implementation. In those cases when I include a reference, I expect the code you hand in to match its output
exactly for full credit.
- Collaboration Policy: I strongly encourage discussions among students. I believe that discussions lead to better
understanding of the course material. However, DO NOT copy each others code! Please read and understand the
UMass policy on academic misconduct (cheating) .
- Late Policy : I will let you guys decide this :). We will talk about this in the first class. Another motivation to attend
the first class.
- Attendance:
- You are expected to show up at every class on time. There will not be any attendance. However, you have a high probability of
missing a random quiz that I might take. You would also miss the regular discussion session and the opportunity of earning extra
credit.
- You might want to bring your laptop, if you have one, in case you want to follow along when I explain the tools you will use, etc.
- A final note: Please do not hesitate to contact me by e-mail or come to my office hours. My job is to help you learn the material
and answer your questions. That being said, with the number of students in the class, the chances of me responding to a last-minute
emails in a timely manner is low . Start the assignments early so you can ask good questions.
Marc Cartright
This is taken from Nilanjan Banerjee's syllabus from Spring '08,
with minor modifications by Marc Cartright