![]() |
C++ Programming - Winter 2011
|
![]() |
Syllabus
Welcome
Welcome to CMSC 389C, C++ Programming. This is a one credit course that will introduce the essential features of the C++ programming language. The official pre-requisite for this course is CMSC 216 (or 212 or 213/313), and so we will assume that students are already familiar with Java and elementary programming in C.
Instructor
Fawzi Emad
Recommended Text
C++ for Java Programmers
Topical Content
Since this is the first offering of the course, the topical content will be determined somewhat dynamically! Major topics we hope to include are (in approximate order of presentation):Other potential topics (time permitting):
- Brief history of C++
- Comparing Java with C++ (Overview)
- Introductory syntactical examples
- Functions (taxonomy, syntax, etc.)
- Variables in C++
- Separate compilation model
- Memory maps (Java vs. C++)
- C++ string class
- Assignment in C++ vs. Java
- Dynamic allocation (new/delete)
- const
- Passing parameters
- Return values
- Collections (arrays, vectors)
- Writing classes (overview)
- Constructors
- Nested objects
- Member initializers
- Destructor
- Basics of operator overloading
- "The big 3": copy constructor, operator=, destructor
- static members
- Inheritance (Java vs. C++)
- Templates
- Exception handling
- Finer points of operator overloading
- More about the standard template library (STL)
Course Grades
The current plan (which is tentative and may change depending on how things go) is to have two significant projects (one short and one longer) along with numerous homeworks. We will probably have a small homework assignment each day. Some of the homeworks will involve a graded programming exercise, others will be a set of questions for you to answer and hand in.The tentative plan for computing final course grades is:
35% - Projects (10% for Project #1 and 25% for Project #2)
30% - Homeworks
35% - Final Exam
Due dates
The due dates for assignments are rigid. Programming assignments that are to be submitted electronically will be due at 11:00PM. You may submit a programming assignment up to 24 hours after the due date, but you will be penalized 20%. Assignments that are to be handed in on paper will be due at the beginning of class. These assignments will not be accepted after the due date unless there are very extraordinary circumstances.
Project Implementation
You will be assigned a class account which you may use to implement the programming assignments, or you may implement them externally using the IDE of your choice. Options will be discussed in class. However you choose to implement the assignments, you will be testing and submitting them using your class account.
Academic Honesty
All assignments/exams must be done individually. Please visit the webpage of the Student Honor Council for a detailed explanation of what constitutes academic dishonesty. Note that it includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. You are allowed to use the Web for reference purposes, but you may not copy code from any website or any other source. In short, all submitted work must be your own.Cases of academic dishonesty will be dealt with harshly. Each such case will be referred to the University's Office of Judicial Programs. If the student is found to be responsible of academic dishonesty, the typical sanction results in a special grade "XF", indicating that the course was failed due to academic dishonesty. More serious instances can result in expulsion from the university. If you have any doubt as to whether an act of yours might constitute academic dishonesty, please contact your instructor.

