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 'brief' 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 hopefully be covering. This book is a good reference as well, and as such is probably worthwhile
getting this latest edition.
It is brief compared to the companion book, The C++ Programming Language, also by Stroustrup.
This book is a much more comprehensive coverage of the language than A Tour.
The author first presents a 'brief' overview of the language (it is this brief overview that basically was extracted to prodice A Tur, and then goes into greater detail in the
second part of the book. The author also goes into some detail as to his rationale for many of the language decisions. It was my previous choice of text for 3142, but I found it to be
too much for this course. If you are really interested in C++, or simply a well-written programming language book for programmers (as opposed to the intro texts you've be exposed to),
you might consider purchasing it. You should find all the material from A Tour in it, but you may have to look around a bit, and my 'Reading' references at the top of the Lecture
Note pages won't correspond to that text. (I wouldn't buy them both — too much overlap &mdas; but together, A Tour and The C++ Programing Language cost less than half of an
intro-to-programming textbook.)
Here is a short description of the text from Stroustrup.
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 anything 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 follow the text in terms of presentation order (i.e., each chapter covered will have a set of lecture notes), though I will be
presenting certain topics n more detail. We will also discuss the notion of programming paradigms, and at some point will
- Introduction and Review of Basic Programming Concepts
- A Brief Introduction to C++ through Sample Programs
- Preliminary Concepts
- scope, lifetime, storage types
- receivers, messages
- The chapters of the text
- 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.)
Your Developmwnt Environment<.h3>
Feel free to use any environment for you C++ development: command-line or your choice of IDE. If you want recommendations, you can find them
here.
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 the one I sent you in the welcoming email
- 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:
The breakdown of you final semester average is:
- Assignments: 20%
- Two Exams: 25% each
- Final: 30%
subject to the following:
- In order to pass the course, you must average a 60 or above on the two exams and final (each exam 30%; final 40%)
- In order to pass the course, you must average a score of 60 or above on the labs & assignments
Missing an Exam (Other than the Final)
There are no makeup exams. If you miss an exam, you must provide some form of written reason (simply deciding not to take the exam is not an acceptable reason):
- If you are absent from the first exam, the grade on the second exam will be used in its place.
- If you are absent from the second exam, the grade on the final will be used in its place.
- If you are absent from the final, see the section below titled Incompletes
- If you are absent from two or more exams, you cannot pass the course.
Incompletes (INC)
For the most part, I do not give a grade of Incomplete.
Paraphrasing from the Bulletin (page 57), a grade of incomplete (INC) may be assigned at the discretion of the instructor
under one of two conditions:
- The student is absent from the final, but is passing the course in all other respects
- Evidence must be presented documenting the reason for the absence
- The INC may then be changed once a final is taken
- The student is passing the course and has completed most, but not all of the requirements.
Only one of the above two conditions (not both) may apply in order to receive an INC.
Please do not ask me to give you an INC so that you can submit a semester's worth of assignments.
If an INC is not resolved, a grade of FIN is eventually assigned.
|
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.
|