About
Announcements
Lectures
Coursework
FAQ
Java API
|
- Instructor:
Prof. Rahul Simha

- Time/place:
- Class: Tuesdays/Thursdays 11.10 - 12.25pm, Tompkins 411
- Lab: Tuesdays, 6.10 - 7.30, Tompkins 411.
- Office Hours: Tuesdays 3-5pm, Phillips 717.
- TA: Khanh Nguyen (Email: ndkhanh AT gwmail.gwu.edu)
- TA Office Hours: Mon 2-4, Fri 11-1, 725 Phillips.
- Course CRN's: Class (86660), Lab (86661)
- Prerequisites:
CS-123 and CS 143 (or equivalents) -
see undergraduate
curriculum. Working knowledge of Java.
- Course description:
In this course, students will learn core concepts in algorithms,
data structures, and problem-solving techniques. Students will
be exposed to classic problems in computer science (such as
searching and sorting), classic data structures (hashing, heaps)
and classic optimization problems (such as the Traveling Salesman Problem).
Students will be encouraged to write clean, efficient code for their
assignments.
The course will be conducted lab-style with a mix of lecture,
lab assignments and projects.
- Learning outcomes:
By the end of this course, students will:
- Understand algorithmic specification, pseudocode.
- Be able to implement a complex data structure.
- Be able to implement a complex algorithm.
- Be able to analyze the execution time of an algorithm
- Acquire an understanding of standard topics in
algorithms: sorting, searching, trees, hashing, graph
algorithms, dynamic programming, combinatorial optimization,
NP-completeness, heuristic search.
- Textbook:
A fair portion of the course does not need a textbook because
the lecture material is available to you on this site. However,
I recommend one of the following:
- Algorithms. By S.Dasgupta, C.Papadimitriou and U.Vazirani
(McGraw-Hill). This is an elegant, small-ish textbook with just
the right material for a first course in algorithms. Explanations
of algorithmic ideas use excellent examples and proofs are
easy to follow. It is not,
however, as comprehensive as the one below.
-
Introduction to Algorithms. T.H.Cormen, C.E.Leiserson and R.L.Rivest.
(McGraw-Hill).
This book covers much more material than can be handled in a
single-semester course. It's advantages are that it makes
a useful desktop reference, algorithms are fleshed out in detail
with examples and accurate pseudocode, and the book is up-to-date in
most areas. Disadvantages: it's bulky, and can initially be
intimidating.
- Foundations of Algorithms. R.Neapolitan and K.Naimpour
(Jones and Bartlett). This book is a compromise between the sweeping
coverage of the Cormen book and the tight, condensed Dasgupta book.
The book covers some topics, such as backtracking and
branch-and-bound, that are hard to find in other books.
Overall, a nice book with solid coverage of topics
that are well-presented.
- Programming load:
The course will be fairly programming-intensive, comparable with
CS143 or CS154. If you are taking TWO OTHER programming-intensive
courses, you could be in for a rough semester. Stop by and discuss
the issue with me.
- Java: The course will make strong use of Java,
especially in the assignments.
See the CS143
homepage for some Java references.
- Coursework and grading:
- 7-8 points: some unannounced quizzes.
- 30 points: five 1-week exercises.
- 48 points: four 2-week assignments.
- 15 points: one in-class exam.
NOTE: the weightage may change depending on how the course
evolves.
- Assignment submission and late work policy:
- All assignments will be submitted via your
Unix accounts. Follow these
instructions when submitting work.
- No late submissions will be accepted for the exercises.
- The assignments may be submitted late, but points will be
taken off: 20 percent for each 24-hour period after
the due-date. These points will not be pro-rated hourly. Thus,
if an assignment is due 5pm Oct 19th, a submission at 5.05pm Oct 19th loses
20 percent.
- The submission time will be determined by the file-date of your crypt file.
Hardcopy late submissions must be initialled with
the submission time by one of the secretarial staff if I am not available.
- If you're seeking an extension because you've been ill and have
a letter from a doctor, come by and see me about it.
- Don't forget: you need to pick a crypt-key for the
semester and email that to the TA before the first
exercise or assignment is due.
- Email policy:
You can send email to my GW email address.
I will answer most class email during specific times set aside during
the week for this purpose - so do not expect an instantaneous response.
Since this is an advanced class, you may not perform "debugging by email".
That is, do not send me code snippets and ask me to identify the problem.
If you want me to look at your code, you have to stop by in person
during office hours and bring along hardcopy. Email is typically used
for clarification regarding coursework. If there is a TA assigned to
the course, you ought to try to email the TA assignment-related questions before
emailing me.
- Academic Integrity policy:
- In this course, you will be expected to work on all assigned
coursework by yourself, unless otherwise specified by instructions on
this page. If you have any questions whatsoever regarding these
policies, see me during office hours.
- You may not, without permission from the instructor,
exchange course-related code with anyone (including
anyone not registered in the course), or download code for use
in your coursework, or use material from books other than the textbook.
Likewise, you may not look
at anyone else's code or show your code to anyone else. Protect
your work: for example, be careful not to leave your printouts around.
- If using a tutor, you may not show your CS153-related code to
your tutor nor use code shown or written by your tutor.
All tutors for CS153 need to first register with me, by meeting
me during office hours.
- If you use material in your assignments that are from
outside the course material, then you should be prepared
to explain that material. The instructor and TA's reserve
the right to question you on your use of extraneous material.
Failure to answer such questions might be viewed as
grounds for an integrity violation.
- The
Academic Integrity Code will apply to this course. Please read
through the code carefully.
- Penalties for violating the code or the policies described here
include failing this course, and are elaborated in the Academic Integrity Code.
- If you have a disability that may
effect your participation in this course and wish to discuss academic acommodations,
please contact me as soon as possible.
- Coding standards:
- Having completed CS-143, you are expected to submit well-written code:
- Include high-level documentation.
- Comments must be substantive and must follow pseudocode
where appropriate (more about this later).
- Select readable variable names and method names.
- Use consistent Java style:
- Consistent indentation (preferred: two or four spaces).
- Variable and method names start lowercase.
- Class names start uppercase.
- Capitalize multi-word names instead of using underscores.
- You will learn to write efficient code in this course, but also
need to pay attention to the three golden principles of coding:
simplicity, clarity and generality.
- Points may be taken off for "ugly code" even if correct and efficient.
|