This is a course on
algorithmic thinking. You will learn how to think about problems
from the point of view of machine procedures to solve the problem. You will be
given techniques to break a problem down, to notice its combinatorial difficulties, to
reason about correctness, and to measure the efficiency of a solution.
You will learn how to recognized the inherent complexity of a problem – the best
possible efficiency that a problem can be solved.
The course does not require programing. The course is more about thinking about
code, than writing code.
However, the Practicum does Javascript programming and dynamic HTML to create creative
animations of the algorithms presented in the course. The Practicum is self-study,
and highly recommended. In the practicum you will learn the basis of in-browser
programming, and exercise your coding skills for algorithms.
General
- The textbook is
Introduction
to Algorithms (3ird edition), Cormen, Leiserson, Rivest and Stein.
-
Please follow us on twitter/csc_517.
-
The course assigns weekly problem sets, due on Wednesdays. It is very
important to do the homeworks. Please direct questions on grading first to the
grader Joe Masterjohn.
-
Our grader is Joe Masterjohn, j.masterjohn@umiami.edu; office Ungar 406, 9am – 11am Wednesdays.
-
No late homeworks accepted after the last day of classes, Tuesday, Dec 10.
-
Midterm Wednesday October 23.
-
The final will be in class at
2:00 – 4:30 pm on Wed Dec 16.
-
Grades are 40% final, 30% midterm, and 30% homework.
Practicum
The mainline of the course will have no programming. The optional practicum will assign
you the task of implementing some of the algorithms using Javascript, CSS, and DHTML.
If you would like to take the practicum, enroll in CSC 403.
Writing Credit
Three essays, each at least 1500 words.
- The origin of algorithms. A historical paper.
There is actually a book, History
of Algorithms ... that might guide you.
-
The need to break military codes drove forward the construction
of computers during World War II.
Among the early computers were
the Colossus
designed by Tommy
Flowers, to break German Navel Codes (Tunny)
and Turing's Bomb,
to break army and high command codes (Enigma).
These were really the first computers ever built.
there were code breaking computers.
- A science fiction short story about algorithms, computers, etc.
If not original, you can do an analysis of some Sci-Fi books like
The Diamond Age, or Snow Crash.
Please write me with your proposed topics, if you elect writing
credit. One paper must be done before the midterm, and the other
two before reading days.
CSC401 is the practicum associated with CSC517.
New practicum information at the csc401 zinc
server.
CSC517 is a course on algorithmic thinking. The CSC517 mainline in the course does not require programming. It is highly recommended that students enroll in CSC401 the Practicum, for experience coding algorithms, and for the experience of using dynamic HTML and Javascript to create imaginative animations of the algorithms presented in the course.
- Project 0:
- I am working on a public web server for students to upload their projects. Use
TextWrangler on mac, or jEdit of Windows to sftp edit the files on the server.
You will be given a private key, instead of a password.
- I am getting together more specific information, but please refer to previous
courses I have offered in Javascript and DHTML:
- Make a web page using Javascript that converts teaspoons to gils.
- Due Monday, September 30.
- Project 1:
-
Do an algorithm animation of insertion sort; see Partition Algorithm Animation as an example.
- or ... See Exercise 4.1-3 and implement and animate the recursive
FIND-MAXIMUM-SUBARRAY algorithm.
- Due Monday, October 14.
- Project 2:
- Do an algorithm animation for randomized selection, as described in our the
midterm, and in the textbook, section 9.2.
- Due Monday, November 11.
- Project 3:
- Program a red-black tree for insert and delete.
- Visualizing a tree: in order to keep this simple, use a text visualization.
One of my favorites is a pre-order traversal where an indentation amount is
collected. Write the node at that indentation then recursively do first the
left then the right sub-tree, both advanced to the net indentation level.
- Due Monday, December 2.
- Submit everything for final grading. Done with the semester!