Brain & AI Lab


CSC401 is the practicum associated with CSC317.

CSC317 is a course on algorithmic thinking. The CSC317 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. The Practicum is a one-credit course; its format is self study and there are no formal lectures assigned. We will point you to relevant references, and include some example code alongside the assignments that will help you get started. Unlike the main course which has a problem set assigned every week, the Practicum will include a smaller set of programming assignments.

Preliminaries: We will send email by the end of the second week of class to students who have signed up for the Practicum. You will then:

  • Set up your account, using the instructions that were sent to you by email. First, arrange your index.html (in your public_html directory) to make a home page for the practicum that will link to the projects.
  • NOTE: You can view your web page at (use the ID we gave you via email). Please create a directory project1 from your public_html directory. Then from your index.html file in your public_html directory, make a link to project1. For instance, you can use the following type of html code: <a href=”project1/index.html” target=”_blank”>Project1</a>
  • For learning about DHTML, CSS, and Javascript, see references below.


    • Project 1: Preliminaries of Javascript and HTML: Due September 21, 2018. (a). Look at Enter Name. Make a webpage like Enter Name using Javascript, except that the user can interactively choose from several different greetings of your choice (e.g., by selecting from a list of options). (b). Look at Number Build. Make a webpage like Number Build using Javascript, except that if a user marks the numbers summing to the year that University of Miami was founded, then the program displays a photo of the campus (of your choice). Place the files under public_html in your home directory.
    • Project 2: Posted September 25; Due October 23 2018.
      Do an algorithm animation of Randomize-In-Place (see pseudocode in CLRS book, Chapter 5, p 126). The algorithm should display the pseudocode and line by line highlighting through the code, along with the resulting array. Test your algorithm to see that it works as you expect it to. For an example of an algorithm animation (which is different than the above assignment, but shows a full example of implementing an animation of another algorithm we learned in class), see Partition Algorithm Animation: ( Feel free to modify the style of your animation to your liking. Feel free to modify the style of your animation to your liking.
  • Project 3: Posted Nov 5, 2018; Due Dec 3, 2018. Implement a double hashing animation. See linear probing example:
    Make the table size 16. Set the first hash function as: key mod 16; and the second hash function as: 2 (key mod 4) + 1. Try to illustrate the collisions and skips to new slots in the table. Recall: In double hashing, the slot is determined by (H1 + i H2) mod 16, in which H1 is the first hash function and H2 is the second hash function. Here i multiplies H2, and initially i is set to 0; then if there is a collision we set i to 1; then if there is still a collision we set i to 2; and so on.

Some references:
Annotated DHTML
Annotated DHTML as source
Five Easy Pieces (including HTML, CSS, and Javascript examples)
Web Commerce course