 |
School of Computer Science
Computer Science 308-203A: Syllabus
Introduction to Computing II
Fall Session, 2000
Goals
The purpose of this class is to prepare students with an elementary background
in programming to participate effectively in software development. In particular,
we would like to foster:
-
An understanding of some of the basic data structures and algorithms which
recur time and again in programming
-
An appreciation for the way in which object-oriented programming facilitates
clear and reusable code via abstraction.
-
An awareness of computational complexity issues of running time and memory
as they arise in programming
-
An ability to engage in programming as it is performed in the "real
world," which means working actively with bodies of code which
one did not create entirely on one's own.
Top
Prerequisites
You should be familiar with programming in a high level language including
the use of procedures, parameter passing mechanisms and arrays. I assume
that all of you have some knowledge of Java (or at least of C). This material
is covered in courses in computer programming and problem solving such
as 308-202, Introduction to Computing I.
Most of the ideas we will encounter in the course do not depend on the
language being used to implement them, but when we do use a specific language
for examples or to do assignments, we will use Java.
Top
Text
There is no official textbook for this course, however the following references
on data structures and algorithms in Java may be of use:
-
Michael Main,
Data Structures and Other Objects Using Java, Addison-Wesley,
1999
-
Mark Allen Weiss, Data Structures and Problem Solving Using Java,
Addison-Wesley 1998
Two additional references on algorithms, of which the second is the
classic work frequently referred to as "the Big White Book," an introduction
employed in computer science programs almost universally:
-
Gilles Brassard and Paul Bratley, Fundamentals of Algorithmics,
Prentice-Hall, 1995
-
T.H. Cormen, C.E. Leiserson and R.L. Rivest, Introduction to Algorithms,
MIT Press, 1990
Numerous references on the Java language itself can be obtained from www.javasoft.com
as well as www.java.sun.com.
Top
Course Outline
This course deals with programming techniques used to solve non-trivial
programming problems effectively. We will focus largely on the design of
data structures which support the efficient manipulation of data. Specific
topics to be covered will be chosen from the following:
-
Software design in Java
-
A review of Java
-
OOP - Objects, classes, and inheritance
-
Abstract Data Types (ADT's) and their use in program design
-
Traditional data structures and algorithms
-
Recursion
-
The running time of algorithms
-
Lists, stacks and queues
-
Trees and tries
-
Sorting algorithms
-
Graphs
-
Advanced topics
-
Concurrency, multi-threading and deadlock
-
A little taste of AI
Top
Assignments
There will be bi-weekly assignments, which will consist of a few
written questions and/or programming problems. For the programming problems,
the following must be handed in:
-
Source code (.java files)
-
Compiled code (.class files)
-
Execution of test-cases to demonstrate that the program meets the problem
specification.
The above must be submitted in both hardcopy and electronic format
(except for the .class files which, needless to say, do not need
to be printed out in hardcopy). Handing in a program listing
by itself is of no use to us and will result in a grade of zero.
Assignments should be deposited in the box marked 308-203 outside
MC100N, clearly labelled with your name and student number. They should
contain a diskette with the program, a printout of the program and a brief
discussion of the test cases you checked.
Top
Projects
There will be a course project of moderate size consisting of 2 phases.
Programmers in the field rarely work alone, and are frequently called upon
not only to participate in a collaborative design effort but to alter pre-existing
software, be it for a small tweak or a major upgrade. Unfortunately, students
are rarely exposed to this process before leaving academia.
Project Phase #1 will involve the design and testing of a body
of code somewhat larger than the toy examples which are given as regular
homework assignments.
For Project Phase #2, students will integrate some (not necessarily
100% compatible) software modules into a working program.
Top
Grading
The grading will be partitioned as follows:
Assignments |
20% |
Midterm Examination |
20% |
Final Examination |
30% |
Project Part #1 |
15% |
Project Part #2 |
15% |
Top
Office Hours
Time: MWF 11-1230 Room: McConnell
231
If you need to schedule another time to meet with me, do not hesitate
to e-mail me at wrenner@acm.org
.
N.B. If I am not to be found in my office, I am likely to be found next
door in the Compilers and Concurrency (CCL) lab - McConnell 234.
Top
Send comments/questions to wrenner@acm.org
[ McGill University ][ Academic
Programs
] [ SOCS HOME ]
August 28, 2000 |