CSC 103: Fundamentals of Computer Science III
Course Syllabus
Gene Fisher
Office: Building 14, Room 210
Email: gfisher@calpoly.edu
Web home page: http://www.csc.calpoly.edu/~gfisher
Phone: (805) 756-2416
Office Hours: MW 9-10:30, TTh 1:30-2:30
CSC 102 and CSC 141, both with a C- or better.
There is one required textbook for the course: Data Structures and Algorithm Analysis in Java, by Mark Allen Weiss, Addison Wesley, 1999, ISBN 0-201-35754-2. You should also have a book on the Java programming language (from CSC 102) and a book on discrete mathematics (from CSC 141).
You also need the Cal Poly users guide on Fundamental UNIX Commands (AIX20102), available at http://www.calpoly.edu/~ias/userguides/CentralUNIX.
In addition to these texts, other course materials are available online in the master class directory at http://www.csc.calpoly.edu/~gfisher/classes/103. Online materials are in the following subdirectories:
The online course files are available in following formats:
When accessing files from the web, all links will go to the HTML versions of the files. To access the PostScript, PDF, or plain text version of a document, go to the desired directory and view or copy the desired file with the ".ps", ".pdf", or ".txt" extension.
There will be six work assignments, due on Mondays starting on the third week of class. The class schedule below gives the exact due dates. All assignments will be handed in electronically, using a turn-in program we will discuss in the early labs.
The assignments entail both program development and analysis. These assignments constitute the main focus of the class in terms of your learning experience. They are worth 50% of your total grade.
There are three hours of lab each week. The labs are held in a room with computers where you will do your lab work in groups of two people, and work on your assignments individually.
Each week there will be a set of lab exercises assigned for you to work on. For the first couple weeks, the labs will involve familiarizing yourself with Sun machines in the lab and the available Java tools. Starting in the third week, lab exercises will focus more on programming and analysis.
The lab exercises are not graded. You are expected to work on the exercises during the normal class lab times, and as much outside of class as necessary to complete the work. The purpose of the labs is to familiarize you with the concepts necessary to complete the assignments and do well on the quizzes and exams. If you complete the lab exercises early, you are free to work on your homework assignments during lab.
There will be two lab quizzes, three lecture quizzes, one midterm, and one final exam. The lab quizzes will cover details of lab activities, including Java and UNIX tool details. The lecture quizzes and exams will cover the concepts of programming and analysis that you will use in your work on the assignments. Each quiz will be twenty minutes, the midterm eighty minutes, and the final three hours. The final will be cumulative.
All quizzes and exams are open book and open note. In general, if you keep up with the assignments, you should not have to spend a lot of additional time studying for the quizzes and exams.
Late work on the assignments will not be accepted after the due date. You may
turn in partially completed work to receive partial credit. In general, it is
far better to turn in something as a solution rather than nothing.
Substantial partial credit may be given for programs that do not run correctly
because of some minor problem, or for analyses that are substantially correct
but missing some details.
Grading
The following is a complete point breakdown for all graded items. The percentages are based on 100% of the total grade for the class.
Attendance is not required, except on the days of quizzes and exams. As long as you can successfully complete all assignments, quizzes, and exams, you may choose to attend the lectures and labs as you see fit. Obviously, your instructor thinks it's a pretty good idea for you to attend.
You are expected to complete each of the assignments individually. During labs, you will work with a lab partner on the lab exercises. In general, you are free to consult with anyone on lab exercise work. You are also free to discuss general class concepts with others inside and outside of the class, including tutors. However, when in comes time to do the specific work on the assignments, you must do so on your own.
Any assignment that is discovered to be the work of more than one student will
be considered plagiarism. The CSC department has a computer program that can
reliably detect similarities among several student program files, and this
program will be used if necessary. Suspected plagiarism will result in a zero
on the assignment for all students (the one copied from as well as the copiers)
and a request to visit the instructor in office hours for a discussion of how
to resolve the problem and possibly to reinstate the deserved grade. A second
violation of this policy may result in handling by the University Judicial
Affairs Officer, being failed from the course, or being dismissed from the
university.
Class Schedule
The following is the class schedule for the quarter.
Week | Lecture & Lab Topics | Reading | Quiz or Exam | Assignment Due |
1 |
Intro to the course
Intro to algorithm analysis | Chs 1,2 | ||
2 | Lists, stacks, and queues | Ch 3 | Lab Quiz 1 (Th) | |
3 | Trees I | Ch 4 | Lec Quiz 1 (Th) | Assmnt 1 (Mon) |
4 | Trees II | Ch 4 | ||
5 | Hashing | Ch 5 | Lab Quiz 2 (Tu) | Assmnt 2 (Mon) |
6 | Sorting | Ch 7 | Mdtm (Th) | Assmnt 3 (Mon) |
7 |
Sorting II
Priority queues |
Ch 7
Ch 6 | ||
8 | Graph algorithms I | Chs 8,9 | Lec Q2 (Tu) | Assmnt 4 (Mon) |
9 |
Graph algorithms II
Advanced data structures I |
Ch 9
Ch 12 | Lec Q3 (Th) | Assmnt 5 (Mon) |
10 |
Advanced data structures II
Algorithm design JFC library |
Ch 12
Ch 10 | ||
finals | Final | Assmnt 6 (Mon) |