John Boyland
| Name | Section | Office | Phone | Hours |
| John Tang Boyland | 401 | EMS 925 | 6986 | T 2-3pm, R 11am-noon, F 8:30-9:30am |
| Mohamed Elbendary | 801 803 | EMS E212 | W 3-5pm | |
| Wen Hu | 804 | EMS E212 | M 10-11am |
CompSci 351 is a difficult course, but a rewarding one. It is a course on programming in which you learn by doing. Thus the course involves a lot of hands-on work in the computer lab. However, this course also emphasizes concepts and so written and oral explanations will be required.
Students will be competent in object-oriented programming in C++, more specifically, they will be
new, delete, delete[]);
Students must have received a `C' or better in CompSci 251. This course assumes that you are familiar with and have mastered the material from CompSci 251. In particular, this class assumes students are
The required textbook for the course is
Michael Main and Walter Savitch. Data Structures and Other Objects Using C++. Addison-Wesley. Either the second or third edition is acceptable.
The grade for the course will be computed from the following parts:
Programs and written assignments will be graded for correctness, suitability, style, clarity and practicality. Although we may provide solutions to some assignments, there are usually a wide variety of correct answers to any particular assignment.
All graded assignments must be your own work (your own words), but you may work with other people as long as you list their names prominently on the first page of the assignment, and/or in a comment at the top of the assignment, for example:
// Wendy Lee, Homework #6, CS 351 // I discussed this assignment with Sam White, // and Pat Long. We looked at each other's code notes, // but did not exchange the copies.For this course, verbal communication and collaboration using non-code text or hand-written code is permitted, as long as it is properly documented. Documentation must also be made for help from anyone not in the course, such as a tutor, friend, or relative, and for information off the Web.
You may not make copies of assignments through email, disks, scanning or any other automatic copying technique, except where specifically indicated in an assignment. Similarly, you may not make xerographic copies of portions of homework, or give people print-outs of your programs. At the very least, you must write every word in your assignments. If you are unsure whether something is permitted, please check with an instructor or TA. If you turn in a program which is an electronic copy (or a minor variation of a copy) of other people's, then the source and people who give credit to the source will receive zero for the assignment, while those who do not give credit may be given an 'F' grade for the course. Do not send your programs by email to other people!
Whether or not you have permission of the other, submitting someone else's work as your own is plagiarism, a serious instance of academic misconduct. Everyone is responsible for learning the material themselves. Some of the assignments may be graded in person, especially in cases where the individual contribution to the assignment is not clear. If you are graded in person, you will be expected to demonstrate that you have mastered techniques used in the material you submitted.
All assignments will be assigned a numeric grade. Often, however, letter grades will be used. This table shows how these letter grades are converted into numeric values.
| Letter Grade | A+ | A | AB | B | BC | C | CD | D | DF | F | _ |
| Equivalent Score | 100 | 95 | 90 | 85 | 80 | 75 | 70 | 65 | 60 | 40 | NA |
_ is not yet available; it does not mean zero.
A grade of I means there is some work the student has not yet
done. If this work is not turned in, the grade may revert to a grade
of zero.
At the end of the course, the numeric grade will be converted into a letter grade according to the following scale:
| Letter Grade | A | A- | B+ | B | B- | C+ | C | C- | D+ | D | D- | F |
| Minimum Score | 92 | 90 | 87 | 82 | 80 | 77 | 72 | 70 | 67 | 62 | 60 | 0 |
All your work should be done in the AFS volume assigned to you:
/afs/cs.uwm.edu/users/classes/cs351/Section/PantherID.
You may wish to make a symbolic link from a UNIX acount to this directory.
Before you can access this directory, you will need to
authenticate yourself to AFS using Kerberos. This can be done using
/usr/afsws/bin/klog PantherID
and type your Kerberos password. You can omit naming the
PantherID if your account has the same loginname.
The kpasswd.uwmcs command in the
same directory can be used to change your kerberos password.
The root directory of your volume has some special subdirectories:
summary lists all the scores and
computes the weighted percentage.
| Date | Topic | Relevant reading |
|---|---|---|
| 9/2 | Container ADTs | Ch. 2, 3 |
| 9/9 | Pointers, Dynamic Arrays | Ch. 4 |
| 9/16 | Vectors, Using Iterators | Lecture notes |
| 9/23 | Linked Lists | Ch. 5 |
| 9/30 | Doubly-Linked Lists, Midterm 1 | Lecture notes |
| 10/7 | Templates, Writing Iterators, Nested Classes | Ch. 6.1-6.2,6.5, 6.6 |
| 10/14 | Stacks and Queues | Ch. 7, 8 |
| 10/21 | Binary Search Trees | Ch. 10 |
| 10/28 | Graphs | Ch. 15 |
| 11/4 | Hashing, Midterm 2 | Ch. 12.2-12.4 |
| 11/11 | Derived Classes and Inheritance | Ch. 14.1-14.2 |
| 11/18 | Virtual Member Functions, Hierarchies | Ch. 14.3 |
| 11/25 | Reading Code | Lecture Notes |
| 12/2 | STL: containers and algorithms | Ch. 6.3,6.4 |
| 12/9 | Review | |
| 12/18 | Final Examination (10:00-12:00 noon) |