Bryn Mawr College
CS 246: Programming Paradigms
Spring 2013 - Section 001

Syllabus and Schedule Course Information Text and Software
Course Policies
Reference Links

Syllabus and Schedule

This is a tentative syllabus and schedule.  Topics, reading assignments, and due dates are subject to change.
All assignments and projects are due by 11:59:59pm on the day listed.

Wk Date Topic Reading Assignments Comments                 
No Class

Introductions:  Unix and
Read C++P:  1.1-1.6
Assignment Guidelines, Course Coding Standards

Examples:  helloworld.c, formatting.c, mixingtypes.cpiglatin.c
1/28 C/C++ Basics
Read EC++:  1.1-1.5
Skim C++P:  2.1-2.2

Examples:  charloop.c, chartypes.c, menu.c, mixingtypes.c, scanf.c
C/C++ Basics (continued)
Skim C++P:  4.1-4.6, 4.11, 5.1-5.4

Lab 01:  Unix and Emacs
Examples: digitcount.c, triangle.c, datereformat.cpp
Functions & Scope, Program Design
Read EC++:  1.6-1.7
Read EC++:  2.1-2.7, 2.9

Pointers and Arrays Skim C++P: 6.1-6.4
Proj 1 due Lab 02:  gdb, more Unix and Emacs
Pointers and Memory
Read EC++ 3.1
Read C++P: 2.3-2.4

2D Arrays, Passing Pointers
Proj 2 Design Due

Searching & Sorting

Read EC++ 3.2-3.6
Skim C++P 3.1-3.6
Proj 2 Initial Implementation Due Tuesday
No lab on Monday (Prof. Eaton on travel Monday evening/Tuesday)
Software Engineering I
Proj 2 Final Implementation due Friday No lab on Wednesday (Prof. Eaton on travel Wednesday evening/Thursday/Friday morning)

Lab from 2-4pm on Friday
OOP:  classes and structs
ADTs: Linked Lists (and Pointers)
Read EC++ 4.1-4.10
Read C++P 8.1-8.2, skim 8.3

Proj 3 Design Due by Friday

Separate Compilation and Makefiles
Read EC++ 5.1-5.5
Makefile Tutorial
Debugging Techniques, I/O Streams
Proj 3 due [Prof. Eaton on travel Thursday/Friday]
Spring Break!


OOP:  classes & inheritance
Read EC++ 5.6-5.9, 6.1-6.5

ADTs:  Red-Black Trees

ADTs:  Red-Black Trees (continued)
[Prof. Eaton on travel Monday-Wednesday]

Proj 4 due

ADTs:  KD-Trees

ADTs:  B-Trees

12 4/8
Writing Large Programs:  Design Patterns

Proj 5 due
No Class

13 4/15
Graph Traversals


14 4/22
Weighted Shortest Paths

Proj 6 due

Instructions to use OpenFrameworks
Unix Command Line

Regular Expressions
Proj 7 due

General Information

Instructor: Eric Eaton, Ph.D.

When you e-mail me, make sure you put "CS246" at the start of the subject line to ensure a quicker response.

E-mail is the best way to reach me, and I make a concerted effort to respond to all e-mails within 24 hours on weekdays and 48 hours on weekends (often, much less!).

Office Hours:
Mondays and Wednesday 1:30-2:30pm and by appointment in Park 249

Monday/Wednesday 2:30 pm to 4pm
Room: Park 337
Open Lab: Mondays/Wednesdays 4pm-5:30pm in Park Room 231 (Computer Science Lab)
Jacy Li   TA Hours:  Mondays 8-10 pm and Thursdays 8:30-10:30 pm in Park 231

Course Description: Programming in UNIX and C++. Provides an in-depth introduction to C and C++, as well as programming principles such as abstraction, encapsulation and modularization. Another focus of the class is to gain proficiency in the UNIX operating system. Assumes familiarity with conditionals, loops, functions and arrays and will focus on C++-specific topics such as pointer manipulations, dynamic memory allocation and abstract data types. An excellent preparation for classes such as operating systems and software engineering principles and programming techniques to facilitate medium-scaled development projects.

Prerequisite: CS206 and CS231.

Text & Software


Essential C++ by Stanley Lippman; Addison Wesley

C++ Primer (5th Edition)
by Stanley Lippman, Josee Lajoie, and Barbara Moo; Addison Wesley

Course Policies


Attendance and active participation are expected in every class. Participation includes asking questions, contributing answers, proposing ideas, and providing constructive comments.

As you will discover, I am a proponent of two-way communication and I welcome feedback during the semester about the course. I am available to answer student questions, listen to concerns, and talk about any course-related topic (or otherwise!). Come to office hours! This helps me get to know you. You are welcome to stop by and chat. There are many more exciting topics to talk about that we won't have time to cover in-class.

Whenever you e-mail me, be sure to use a meaningful subject line and include the phrase "CS246" at the beginning of that line. Your e-mail will catch my attention and I will respond quicker if you do this. I make an effort to respond to e-mails within 24 hours on weekdays and 48 hours on weekends.

Although computer science work can be intense and solitary, please stay in touch with me, particularly if you feel stuck on a topic or project and can't figure out how to proceed. Often a quick e-mail, phone call or face-to-face conference can reveal solutions to problems and generate renewed creative and scholarly energy. It is essential that you begin assignments and projects early, since we will be covering a variety of challenging topics in this course.


Your grade will be based upon seven programming assignments, and several written assignments.  Assignments must be submitted according to the Assignment Submission instructions.  You should pay careful attention to the Code Formatting Standards and Grading Policy when doing your assignments.  The grading structure for individual assignments is broken down in the Grading Policy.

At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:

Written Assignments: 16%
Programming Projects: 84% (12% each)
Total: 100%

Incomplete grades will be given only for verifiable medical illness or other such dire circumstances.

All graded work will receive a percentage grade between 0% and 100%.  Here is how the percentage grades will map to final letter grades:

Rounded Percentage
Letter grade

Rounded Percentage Letter grade
97% -100%
A+ (4.0)
77% - 79% C+ (2.3)
93% - 96% A (4.0) 73% - 76% C (2.0)
90% - 92% A- (3.7) 70% - 72% C- (1.7)
87% - 89% B+ (3.3) 67% - 69% D+ (1.3)
83% - 86% B (3.0) 60% - 66% D (1.0)
80% - 82% B- (2.7) 0% - 59% F (0.0)

The instructor reserves the right to adjust the percentage ranges for each letter grade upward in your favor.

Submission and Late Policy

All work must be turned in either in hard-copy or electronic submission, depending on the instructions given in the assignment.  E-mailed submissions will not be accepted.  Extensions will be given only in the case of verifiable medical excuses or other such dire circumstances, if requested in advance.

Late submissions will receive a penalty of 10% for every 0-24 hours it is past the due date and time (e.g., assignments turned in 25 hrs late will receive a penalty of 20%).  Submissions received more than one week late will not be accepted.

Study Groups

I want to encourage you to discuss the material and work together to understand it. Here are my thoughts on collaborating with other students:

If you have any questions as to what types of collaborations are allowed and which are dishonest, please ask me before you make a mistake.

Electronic Devices

I have no problem with you using computers or tablets to take notes or consult reference materials during class.  Tempting though it may be, please do not check e-mail or visit websites that are not relevant to the course during class.  It is a distraction, both for you and (more importantly) for your fellow classmates.  Please silence your phones and computers when you enter class.

Reference Links

These references will be useful throughout the semester: