Bryn Mawr College
CS 246: Programming Paradigms
Spring 2013 - Section 001
Syllabus and Schedule | Course Information | Text and
Software |
Course
Policies |
Reference Links |
Wk | Date | Topic | Reading | Assignments | Comments
|
---|---|---|---|---|---|
1 |
1/21 |
No Class |
|||
1/23 |
Introductions:
Unix and |
Read C++P: 1.1-1.6 | Assignment
Guidelines, Course
Coding Standards Examples: helloworld.c, formatting.c, mixingtypes.c, piglatin.c |
||
2 |
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 |
|
1/30 |
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 |
||
3 |
2/4 |
Functions
& Scope, Program Design |
Read EC++:
1.6-1.7 Read EC++: 2.1-2.7, 2.9 |
||
2/6 |
Pointers and Arrays | Skim C++P: 6.1-6.4 |
Proj 1 due | Lab 02: gdb, more
Unix and Emacs |
|
4 |
2/11 |
Pointers and
Memory |
Read
EC++ 3.1 Read C++P: 2.3-2.4 |
||
2/13 |
2D
Arrays, Passing Pointers |
Proj 2 Design Due |
|||
5 |
2/18 |
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) |
2/20 |
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 |
||
6 |
2/25 |
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 |
||
2/27 |
Proj 3
Design Due by Friday |
||||
7 |
3/4 |
Separate
Compilation and Makefiles |
Read EC++ 5.1-5.5 | Makefile
Tutorial |
|
3/6 |
Debugging Techniques, I/O Streams |
Proj 3 due | [Prof. Eaton
on travel Thursday/Friday] |
||
8 |
3/11 |
Spring Break! | |
||
3/13 |
|||||
9 |
3/18 |
OOP: classes &
inheritance |
Read EC++ 5.6-5.9, 6.1-6.5 | ||
3/20 |
ADTs: Red-Black
Trees |
||||
10 |
3/25 |
ADTs:
Red-Black Trees (continued) [Prof. Eaton on travel Monday-Wednesday] |
Proj 4 due | ||
3/27 |
|||||
11 |
4/1 |
ADTs: KD-Trees |
|||
4/3 |
ADTs: B-Trees |
|
|||
12 | 4/8 |
Writing Large
Programs: Design Patterns |
Proj 5 due | ||
4/10 |
No Class |
||||
13 | 4/15 |
Graph
Traversals |
|||
4/17 |
|||||
14 | 4/22 |
Weighted
Shortest Paths |
Proj 6 due | ||
4/24 |
Instructions to
use OpenFrameworks |
||||
15 |
4/29 |
Unix Command Line |
|||
5/1 |
Regular
Expressions |
Proj 7 due |
|||
Instructor: | Eric Eaton, Ph.D. |
E-Mail: |
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 |
Website: | http://cs.brynmawr.edu/Courses/cs246/spring2013/ |
Lecture: |
Monday/Wednesday 2:30 pm to 4pm |
Room: | Park 337 |
Open Lab: | Mondays/Wednesdays 4pm-5:30pm in Park Room 231 (Computer
Science Lab) |
TA: |
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.
|
Required
|
Communication
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.
Grading
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) |
Submission and Late Policy
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:
The readings and lecture topics are group work. Please discuss the readings and associated topics with each other. Work together to understand the material. I highly recommend forming a reading group to discuss the material -- we will explore many challenging ideas and it helps to have multiple people working together to understand them.
It is fine to discuss the topics covered in the homeworks, to discuss approaches to problems, and to sketch out general solutions. However, you MUST write up the homework answers, solutions, and programs individually. You are not permitted to share specific solutions, mathematical results, program code, knowledge representations, experimental results, etc. If you made any notes or worked out something on a white board with another person while you were discussing the homework, you shouldn't use those notes while writing up your answer, however tempted you may be to do so.
You are fully permitted to (and should!) discuss projects
with members of your team. I also encourage you to work
outside of your team to understand the other topics in the
course.
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.