CISC 3142
Programming Paradigms in C++
Syllabus
The Official Syllabus
Here is the official department syllabus for this course
Text
This is the most recent overview of the language from its creator/designer. Earlier editions will probably not have up-to-date information
on many of the more interesting features we will be covering. This book is a good reference as well, and as such is probably worthwhile
getting this latest edition. The author also goes into some detail as to his rationale for many of the language decisions.
Readings From the Text
At the top of each lecture page is a listing of specific chapters/sections correspond to material covered in that lecture;
other topics are for your general information only; of course, feel free to look at the other material in the chapters,
we will get to some of it later. Don't be concerned if some of the material or examples go over your head; this is not
an introductory text, it's meant for experienced programmers. Feel free to ask me about something you don't understand.
Other Readings
Following the text readings section, there will often be an additional section of other readings … articles, websites, images, etc. These
are completely optional, and are solely for you own enjoyment. You are not responsible for any of the material therein (unless it is contained in
the Lectures Notes or presented in class).
Code Presented or Related to the Lecture
The last section on the Lecture page is a link to code presented or otherwise contained in the lecture. Feel free to study, or use that code in
any manner you feel fit. In particular, if you find it useful, you can copy it into any of your assignments.
Topic Overview
We will start off with some preliminaries — the usual 'overview' and a review of what you should be
bringing to this course from your earlier coursework. We will then present some simple C++ programs to give you
model code for your own initial programs. These samples are heavily annotated and have been designed so they include
most of the basic coding techniques you need for elementary programs in C++. The last of these preliminary topics is
a presentation — in Java — of a set of concepts that are necessary in or to understand C++; in particular
in contrast to Java. Their presentation in Java may be occasionally 'awkward' or artificial, how it is still a
worthwhile exercise because of your familiarity with that language.
We will then head into the text which presents the language in something of a 'spiral' approach. Part I is
an overview of the features of the language with brief discussions of motivations, usefulness, etc. As far as I can
tell, this material closely follows another of Stroustrup's book A Tour of C++. The three primary subsections
of Part I — Basic, Abstraction Mechanisms, and Container & Algorithms — are then revisited in Parts II,
II and IV of the text respectively.
- Introduction and Review of Basic Programming Concepts
- A Brief Introduction to C++ through Sample Programs
- Preliminary Concepts
- scope, lifetime, storage types
- receivers, messages
- Part I — Introduction — Basics, Abstraction, Containers and Algorithms
- Part 2 — Basic Facilities — Imperative Programming
- Part 3 — Abstraction — Classes, Inheritance, Templates
- Paradigms — Procedural, Object-Oriented, Generic Programming, Metaprogramming
- C
- Design philosophy and principles
- Object-informed-C
Along the way, we will be comparing C++ to Java; the two language make a fascinating study in contrasts; a stark example of languages that
are so close in syntax, and semantics are a certain level, and yet so far apart in others. We will also be investigating the notion of
programming paradigms, i.e., a way of viewing a programming language based on its language features. In particular, this will allow us to
provide insights into the differences between C++ and Java, as well as understand many of the newer language features of the languages.
Assignments
Programming requires practice, and in this course such practice comes in two forms: short exercises, and labs/projects.
The short exercises typically consist of a few lines of code and are very narrowly focused on a topic covered in class.
Most of these exercises will be trivial for you; they are primarily meant as practice with the syntax and semantics of the language
(which is identical to Java for many of them). The labs/projects are larger,
often complete programs, usually incorporates several topics, and gives you a better taste of 'real' programming.
You will be using CodeLab — an online, interactive programming exercise system — for both types of assignments.
You can find more about CodeLab here
The exercises — being rather short and not full programs — are completed directly in CodeLab,
while it is recommended that you code and complete your labs in the IDE of your choice prior to submitting it to CodeLab.
(CodeLab is not meant as an IDE, coding a fullprogram from scratch in it is not recommended.)
CodeLab Information
To Register:
- Go to turingscraft.com
- Click "Register" and follow the instructions
- When you fill out the forms, use your Best Email Address and Actual Name
- When asked for a Section Access Code, use: CUNY-30408-UCHP-54
- To Login: Same URL, click "Login" and use your username (email) and password
Grading of Assignments
When you submit an exercise of lab to CodeLab, it checks that your code is correct, by running it against various test cases.
If your code fails, CodeLab will often provide feedback or hints to help you correct your mistake. For the short CodeLab exercises,
it is sufficient to simply get a correct response from CodeLab. Many of your labs will be that way as well; all you need is a correct
response from CodeLab.
For several of the labs however, I will mark the exercise as 'For Approval', which means that I will be performing a final review and check
of your code after CodeLab has determined that it passes the test cases. This 'instructor check' looks for style, format, and documentation
of your code. I will then approve or deny your submission; in the latter case that
means you must fix your code based on my comments, and resubmit. Once approved, you are done with the assignment.
Your score on this practical portion of the course will be straight percentages of the number of labs completed and the number of
CodeLab exercises completed, with the final 'labs & assignments' average being calculated as 25% CodLab exercises
and 75% labs.
The labs and CodeLab exercises are posted in CodeLab in two separate sections. They are all assigned deadlines,
somewhere between one and three weeks from their initial assignment. As they correspond to the lectures, I will post
them on the day the lecture is posted (so you can get a head start on them if you are so inclined) , they are then
officially assigned the day the lecture is finished (my lectures do not typically correspond to class meetings, but
rather span several), and the deadline is calculated from that day.
Grading:
One cannot truly be said to have completed the material in this course without having both learned the concepts
presented as well as achieving a basic competency in coding C++. To this end, you must perform passing work on both the
exams as well as the assignments. It is insufficient to obtain a passing average by scoring a passing grade on the exams
or the practicum but not both. As such the grading system is designed to have two gatekeepers: a passing grade on your
exams, and one on the practicum:
- In order to pass the course, you must average a 60 or above on the two exams and final
- In order to pass the course, you must average a score of 60 or above on the labs & assignments score
- Assuming you pass the first two bullets, your semester average is 25% Labs, 25% each exam, 25% Final Exam
The faculty and administration of Brooklyn College support an environment free from cheating and plagiarism.
Each student is responsible for being aware of what constitutes cheating and plagiarism and for avoiding both.
The complete text of the CUNY Academic Integrity Policy and the Brooklyn College procedure for implementing that
policy can be found at this site: http://www.brooklyn.cuny.edu/bc/policies. If a faculty member suspects a violation
of academic integrity and, upon investigation, confirms that violation, or if the student admits the violation,
the faculty member MUST report the violation.
|
In order to receive disability-related academic accommodations students must first be registered
with the Center for Student Disability Services. Students who have a documented disability or suspect
they may have a disability are invited to set up an appointment with the Director of the Center for
Student Disability Services, Ms. Valerie Stewart-Lovell at 718-951-5538. If you have already registered
with the Center for Student Disability Services please provide your professor with the course accommodation
form and discuss your specific accommodation with him/her.
|