University of Denver Home Page University of Denver Home Page DU Department of Computer Science Home Page   Home Page for Faan Tone Liu  

Comp 1672, Sections 1 and 2, Winter 2003
Course Information and Syllabus

Course Calendar and Assignments


Instructor:

Faan Tone Liu (email ftl@cs.du.edu)
Office: JGH 319, x1-2803
Office Hours: M 10-11, W 1:30-2:30, Th 4-5, F 12-1,
(or gladly by appointment)

Teaching Assistants:

Oscar Hasbun (email ohasbun@cs.du.edu)
Office: JGH 202A, x1-2807
Office Hours: NEW! MWTh 5-7

Jeff Edgington (email jedgingt@cs.du.edu)
Office: JGH 308, x1-2283
Office Hours: T 3-5, Th 1-5


About This Course

In this course we continue our study of C++. We will cover recursive functions, const parameters and default parameters to functions, reference variables, arrays (including character arrays and multi-dimensional arrays), vectors, the string class, search and sort algorithms, pointers, classes and objects, dynamic memory allocation, memory management, recursive structures (such as linked lists), streams, and formatting I/O. In addition to mastering this material, you are expected to improve your design skills, programming skills, and debugging skills. You will also improve your communication skills, including documenting your programs, listening to and speaking about technical material, and reading texts to learn information independently.

This is a demanding course that requires significant time and energy. It provides a basis for further courses in the discipline, so the effort you apply now will serve you greatly in the future.


Course Meeting Times

The lecture is held in JGH 316 at 11:00 on Mondays, Wednesdays and Fridays. The lab is held in JGH 318 at 11:00 on Tuesday (Section 1) or 11:00 Thursday (Section 2)


Required and Optional Resources


Grading

You will be evaluated based on your performance in the lab, on weekly homework assignments, on programming projects, on exams, and on a program-demonstration exercise.

Labs are held weekly (on Tuesdays or Thursdays, depending on your section), and will contribute approximately 10% towards your grade.

Homework will be assigned and due approximately weekly. Please try the homework as soon as it is assigned. You'll be given an opportunity in class to ask questions about it. Your grade on homework constitutes about 25% of your grade.

Programming projects will be given about 4 times during the quarter. These projects will constitute about 35% of your grade.

There will be two exams in this course. The midterm exam will be given on Monday, February 10 in class. The cumulative final exam will be given on Wednesday, March 19 at 10:30 a.m. in our regular classroom. This is the date determined by the registrar (see DU Winter 2003 Final Exam Schedule). Exams will be worth approximately 30% of your grade.

Once during the quarter, you will have the opportunity to demonstrate your program to me in my office. You will demonstrate execution of the program, and explain the construction of the program and any interesting or difficult issues you came across while designing, coding or debugging. The program-demo will count for a portion of your homework grade.

Your attendance and class participation will be taken into account only in borderline cases.


Collaboration and Academic Honesty

When you turn in work in this course, you are implicitly agreeing that you have followed the rules for collaboration set forth for that assignment. You should not view in any way another person's assignment, nor should you possess electronic copies or hard copies of another person's assignment before that assignment has been graded and returned. Copying another person's work on homework assignments, exams, lab exercises or projects constitutes plagiarism, a violation of the University of Denver Honor Code. This code forbids plagiarism, cheating, fabrication, and aid of academic dishonesty. Please note that "aid of academic dishonesty" includes allowing another person to copy your work. This and all other violations of the University's academic standards in this class will be treated with severity. Possible outcomes include (but are not limited to) a grade of 0 on the relevant assignment and a failing grade in the course. In addition, a letter describing the incident will be sent to the Office of Citizenship and Community Standards, which will address the situation at their discretion. This office determines additional consequences for violations to the DU Honor code. These consequences may include suspension or expulsion from the University.

Guidelines for Homework Assignments

Homework assignments are due at the beginning of the class period on the due date. Your papers should be neatly written and organized. If your handwriting is not easily legible, then they should be typed. In this class, you may collaborate with others in the class on homework except where explicitly noted otherwise. There are limits to this collaboration, however. First, collaboration must be bi-directional. If each person is not contributing significantly to the creative effort, then it is not collaborative work, it is copying. Secondly, the collaboration is allowed for solving problems, not for writing the solutions that you turn in. Solving problems includes discussing overall strategies and resolution of details. When you write up the solutions to the assignments, however, your work must be completely your own. Although the ideas may have been generated together, your explanation of them is your own creation. You may not write up homework assignments together and you should not be in the presence of your classmates or others when you write up homework assignments. You may not copy other's written work or share your own written work. In addition, you must document the collaboration by acknowledging your co-worker's contributions (both general and specific) to your final product. Please put this at the end of your assignment. If you have not worked with anyone else on the assignment, then please write that down as well.

Guidelines for Programming Assignments

In this course, programming projects are individual efforts. You may not collaborate with or receive aid from others in the class, and you may not collaborate with or recieve aid from anyone outside the class. The only exceptions to this are as follows. First, you may receive help from the course instructor or TA. Second, you may seek minor assistance from another person to assist you in finding syntax errors, in tracking down pernicious bugs, or in testing your finished program. The person aiding you should not write a single line of your code, should not help you in figuring out how to fix a bug they find (or you find), nor help you in designing or re-designing algorithms. Lastly, whenever you receive allowable assistance from another person, you must document it and turn that documentation in with your assignment. Write down who it was that helped you, exactly what they did to assist you, and how much time they spent assisting you.

Programming assignments are due at the beginning of the class period on the due date. Turn in a hard copy of the header files and source code files - your name should be in a comment at the beginning of each file. In addition, mail a copy of your source code to comp1672@cs.du.edu before the beginning of class.

Your program must work correctly to receive credit. A program which does not compile will receive little credit. A program which works partially will receive partial credit. Your score improves if you attach notes documenting the incompleteness or bugs (include details of the circumstances under which they occur), since this shows the degree to which you tested your code.

Your program should be formatted logically, and should be easy to read.

Comment your code well - write comments that would be useful to someone who would have to debug, maintain or enhance your code. The quality of your comments is included in your grade.

Late Assignments

Extensions for extreme and unusual circumstances that are beyond your control may sometimes be granted if requested in advance or at the soonest possible time. Late assignments will be accepted, or not, at my discretion, with the penalty again at my discretion.

Guidelines for Exams

Exams are given in class and are completely individual efforts. You may not give or receive assistance in any way. Feel free to ask me for clarification if you do not understand what I am asking.

Guidelines for lab

Rules for collaboration in the lab will be given in lab by your teaching assistant.


Course Calendar and Assignments

The calendar below contains links to homework assignments, links to programming projects, as well as important dates for you to keep in mind.

Mon Tues Wed Thur Fri
Jan 6

Homework 1
Programming Project 1
Jan 7

First lab for Sec. 1
Jan 8

Review outline
Jan 9

First lab for Sec. 2
Jan 10

Last day to register for classes
string_practice.cpp
file_practice.cpp
Jan 13

Program 2
Program 1 due
Class notes
HW 2 assigned
Jan 14

Lab 2
Homework 1 due
Jan 15

2D array program
Class notes
Jan 16

Lab 2
Jan 17

Class notes
Jan 20

Martin Luther King Day
No class
Jan 21

Lab 3
HW 2 due
Jan 22

Homework 3 assigned
Example programs from class:
pointers.cpp
pointers2.cpp
Jan 23

Lab 3
Jan 24

Example program:
vector.cpp
Jan 27

Recursion example from class:
Integer power program
Jan 28

Lab 4
Homework 3 due
Jan 29

Homework 4 assigned
Examples from class:
Fibonacci program
Towers of Hanoi program
makefile for hanoi program
Jan 30

Lab 4
Jan 31
Feb 3

Program 2 due
Feb 4

Lab 5
Homework 4 due
Feb 5

Homework 5
Today's class example:
timeexample.cpp
time.h
time.cpp
makefile
Feb 6

Lab 5
Feb 7

Project 3
Feb 10

Midterm exam
Feb 11

Lab 6
Homework 5 due
Feb 12
Class declarations for program 3
Feb 13

Lab 6
Feb 14

Last day to drop classes
with automatic W
Feb 17

Class notes
Code example from class
Feb 18

Lab 7
Feb 19

Homework 6
Feb 20

Lab 7
Feb 21
Feb 24 Feb 25

Homework 6 due
Feb 26

Today's class example:
employee.h
employee.cpp
employeetest.cpp
Homework 7 assigned
Feb 27 Feb 28

Program 3 due
Project 4
Mar 3 Mar 4

Lab 8
Homework 7 due
Mar 5 Mar 6

Lab 8
Mar 7
Mar 10

Linear search
Binary search
Mar 11 Mar 12

Homework 8
Recursive binary search,
along with insert sort:
Rec. bin. search + ins. sort
merge sort
Mar 13 Mar 14

Last day of classes
Mar 17 Mar 18 Mar 19

Final Exam
10:30 a.m. in JGH 316
Mar 20 Mar 21

Assignments


Homework 1, Homework 1 solutions
Homework 2, Homework 2 solutions
Homework 3, Homework 3 solutions
Homework 4, Homework 4 solutions
Homework 5, Homework 5 solutions
Homework 6, Homework 6 solutions
Homework 7, Homework 7 solutions
Homework 8, Homework 8 solutions
Programming Project 1
Programming Project 2
Programming Project 3
Programming Project 4

Reading material


General Review: Chapters 1-8, plus beginning of chapter 9
Strings: Chapter 8, p. 380-390
Character arrays (C-style strings): Chapter 9, pp. 423-430
2-dimensional arrays: Chaper 9, pp. 431-444
Pointers: handout given in class
Vectors: Chapter 21, pp. 1202-1209
Recursion: Chapter 10
Classes: Chapter 11 (deals with structs, which have different syntax from classes but serve many of the same purposes as classes. This chapter multiple good examples of grouping data), Chapter 12.
Pointers and classes: Chapter 14, pages 665-712.
Linked lists: Chapter 16, pages 819-834
Searching and sorting: Chapter 18 (skip material on quicksort)


Please see DU Winter 2002 Final Exam Schedule for the final exam time for your section.


This page was last modified on: