|John Boyland||401||EMS 925||R 10-12 noon, F 8-9am|
|Hossein Ghanbari||803, 805||EMS E218||M 10-12 noon|
|Antonio Moctezuma||804||EMS E218||M 2-3pm|
|Henry Trimbach||801, 802||EMS E218||M 3-5pm|
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 explanations will be required.
Students will be competent in object-oriented programming in Java, more specifically, they will be
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. Data Structures and Other Objects Using Java. Addison-Wesley. 3rd or 4th edition.
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 design 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 must also document any help that you gave to another person--be very careful that you do not tell them the steps they need to use. When in doubt, have them contact an instructor or authorized tutor.
For this course's homework assignments, you are required to show your work, not just show the final product. This is done using git by committing after every stage of your coding, and at least every day that you do work on the program. So before you make changes to your code during debugging (for instance), please commit your code if you haven't committed lately. Showing your work is your best defence against allegations of misconduct; you can show how you gradually reached you solution.
Please delete any copies of assignment from previous semester. Any use of the work from previous semester of this class is not permitted and is grounds for failing the class.
You may not make copies of assignments through email, messaging, USB drives or any other automatic copying technique, except where specifically indicated in an assignment. Even a screenshot of code may not be sent, except to the class instructors or authorized tutors. 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 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 to other people! It will not help them learn and they will turn in your code or a minor variation as their own.
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.
_is not yet available; it does not mean zero. A grade of
Imeans 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:
This course meets weekly for 60 contact hours. You also have required reading of about 500 pages, which we estimate will take approximately 50 hours. There are thirteen required homework assignments, each of which will take 10 or more hours. This yields a total estimated workload of 240 hours.
|1/22||Abstract Data Types||Ch. 2|
|1/29||Dynamic Arrays||Ch. 3|
|2/12||Linked Lists||Ch. 4|
|2/19||Linked List Variations||Lecture Notes|
|2/26||Generics, Linked Iterators||Ch. 5|
|3/5||Stacks and Queues||Ch. 6, 7|
|3/12||MIDTERM EXAMINATIONS||Ch. 2-7|
|3/26||Binary Search Trees||Ch. 9|
|4/2||Navigating Trees||Lecture Notes|
|4/9||Maps||Ch 5.7, Oracle's Map tutorial|
|5/13||Final Examination (Monday 10:00-12:00 noon)|
We provide a way for people to take CS 351 even if they have busy professional schedules during the day. These people must still arrange to be present for the midterm and final examinations, but they can be excused from quizzes and lab exercises if they do extra work:
If you will be needing any accomodation in this course for any reason, please contact the instructor. Please also be aware of the standard University policies: http://www.uwm.edu/Dept/SecU/SyllabusLinks.pdf
About this document