G E O R G E T O W N C O L L E G E
CSC304 Spring 2010 Syllabus
CSC304 Algorithms [ https://scholar.georgetowncollege.edu ]
TR 09:30am-10:45am, Asher 132
Dr. Danny Thorne (dthorne0), Asher 121, 502-863-8362,
http://www.georgetowncollege.edu/Departments/mpc/thorne/
Course Description
Study of algorithms such as advanced searching and sorting algorithms, graph
and numerical algorithms, hashing, pattern matching, and others. Complexity
and recursion.
Primary Text
Sedgewick, Algorithms in C++ (1992) --
http://www.amazon.com/Algorithms-C-Robert-Sedgewick/dp/0201510596
Sedgewick picks up in a pretty natural way where we left off in CSC215 and
covers a nice broad range of algorithms in a way suitable for an introductory
undergraduate level course.
Auxiliary Text
Dasgupta, Papadimitriou, and Vazirani, Algorithms --
http://www.amazon.com/Algorithms-Sanjoy-Dasgupta/dp/0073523402/
(Online version: http://www.cs.berkeley.edu/~vazirani/algorithms.html)
This is a very nice, albeit terse, exposition. I considered using this as the
primary text, but it assumes more background than what CSC215 and MAT301
provide.
Popular Reference
Cormen, et al., Introduction to Algorithms --
http://www.amazon.com/gp/product/0262033844/
This may be the most commonly used and referenced algorithms text. It is the
text that was used in my graduate level algorithms course. Dr. Crawley and I
tend to consider it too big and elaborate for the primary text of an
introductory undergraduate course.
Classic Monograph
Knuth, The Art of Computer Programming --
http://www.amazon.com/Art-Computer-Programming-Volumes-Boxed/dp/0201485419
Probably most people familiar with this 4 volume opus (5th volume in the
works) would not consider it an overstatement to call this a masterpiece.
The original three volume set that was completed last century was named by American Scientist as one of the
100 or so Books that shaped a Century of Science,
listed among the 12 physical sciences monographs along with works by Einstein, von Neumann, Feynman, etc.
It is the authoritative exposition on algorithms. Although not
appropriate as the primary text for an undergrad introduction, Donald Knuth
is one of the paragons of our field with whom every computer science major
should be familiar.
Grading
Categories and weightings:
Homework 0.55,
Exam One 0.15,
Exam Two 0.15.
Final Exam 0.15.
Numerical scores between 0 and 1 (0% and 100%) are computed for
assignments and exams by dividing the
total number of points earned by the total number of points possible.
Scores for categories are computed by averaging the individual scores
in the categories.
The score for each category is then weighted according to the above
weights to give an overall course score between 0 and 1.
The overall score for the course is then mapped to a letter grade for
the course as follows:
[0.925,1.000]-->A,
[0.875,0.925)-->AB,
[0.825,0.875)-->B,
[0.775,0.825)-->BC,
[0.700,0.775)-->C
[0.600,0.700)-->D
[0.000,0.600)-->F
.
Homework
Homework will be assigned and collected regularly.
Homework will be in the form of both pencil & paper assignments and programming projects.
Homework should be completed independently by each student
(see the Honor System section of the Student Handbook http://www.georgetowncollege.edu/studentlife/handbook.pdf).
That does not mean you have to avoid discussing concepts related to
assignments with each other, but you need to do your own work.
If you do discuss aspects of an assignment with others in a way that
helps you understand how to complete part(s) of the assignment,
cite them
on your assignment submission
(i.e., provide their name and how they helped you).
Likewise, cite any other sources from which you get assistance.
If you have to turn in homework late, provide a documented reason.
Exams
Tentative, approximate dates for the midterm exams are
late February for Exam 1 and mid April for Exam 2.
If you must miss an exam and want to make it up,
arrange it with me at least a couple of days before
the exam date, and provide a documented reason for missing.
The Final Exam is scheduled for
Friday, May 7, 9-11am.
Attendance
Your attendance will be monitored. There is no explicit
category for attendance in the grading scheme for the course. However,
missed exams and homework will affect your grade. Furthermore,
attendance will flavor my decisions about borderline scores at the end
of the semester.
Office Hours My office hours
(
M 3:30p-4:30p,
T 1:30p-2:30p,
W 3:30p-4:30p,
R 1:30p-2:30p
)
are posted on my door and on my web page.
They might change, so check my door or the web page to confirm.
I am at your disposal independently of office hours.
You may call ahead, make an appointment,
or just drop by and see if I am available.
If I am unavailable due to work-related business when you drop by,
I will tell you; otherwise, I am happy to see you anytime.
Coding Style Conventions
- Line width: 80 chars (including documentation)
- Indentation size: 2 spaces (No tabs!)
- No trailing white space in your code.
- Always use scope symbols
{ } even when not technically necessary.
- File names for classes should correspond to the class name.
- Use the extension
.cc for C++ files (.h for headers).
- Do not use white space in file names or folder names!
- Get in the habit of using the
const qualifier wherever it is
appropriate.
- Double literals need decimal points. Int literals do not have decimals.
- Do not indent the bodies of namespaces.
- There are exceptions to some of these rules.