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.
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) will receive a 1, 1/2 or 0 depending on whether their
solution is correct, partially correct, or wrong. This grade will count as extra credit at the end of the course and will help bump up your final grade !. I will put up the grades in your account page. (Reminder : Do not forget to register for your account .
- 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.
- You will get one programming assignment per week on the day of class which will be due the day before the next class (I will decide the time by the first class).
- 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! I will use a sophisticated software tool to detect code copying. 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 would 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 I am going to frown upon last-minute barrages of e-mails the night before the assignment is due. Start the assignments early so you can ask good questions.
Schedule
| Class # | Date | Topics
|
|---|
| 1 | Jan 30, 2008 | Introduction, Compilers/Debuggers, Basics
|
|---|
| 2 | Feb 6, 2008 | Data types + Functions
|
|---|
| 3 | Feb 13, 2008 | Pointers + References
|
|---|
| 4 | Feb 20, 2008 | Classes Basics
|
|---|
| 5 | Feb 27, 2008 | Advanced Class topics - Overloading + Inheritance
|
|---|
| 6 | Mar 4, 2008 | Pointers Again
|
|---|
| 7 | Mar 26, 2008 | Standard Template Library (vectors+queues+stacks+maps)
|
|---|
| 8 | April 2, 2008 | C++ Advanced topics + Conclusion
|
|---|
Nilanjan Banerjee