Bryn Mawr College
CMSC 330 Algorithms: Design & Practice
Spring 2018
Course Materials
Prof. Deepak Kumar

Texts  Important Dates  Assignments  Lectures Course Policies Links

General Information


Deepak Kumar
202 Park Science Building
dkumar at brynmawr dot edu

Lecture Hours: Tuesdays & Thursdays, 9:55a to 11:15a
Room: Park 337
Lab: Thursdays 11:25a to 12:45p in Room 231 (Attendance in ALL labs is required)
Office Hours: Tuesdays, 1:30-2:30p & Wednesdays, 10a to 11:00a, or by appointment


Required Texts

Algorithms Unlocked by Thomas Cormen, MIT Press 2013. Available at the Campus Bookstore ($27.00 - new, $19.00 - used). Also at for $24.48 click here.

Nine Algorithms That Changed The Future by John MacCormick, Princeton University Press, 2013. Available at the Campus Bookstore ($15.00 - new, $10.75 - used). Also available at for $12.40 click here.


Course Description:This course examines the applications of algorithms to the accomplishments of various programming tasks. The focus will be on understanding of problem-solving methods, along with the construction of algorithms, rather than emphasizing formal proving methodologies. Topics include divide and conquer, approximations for NP-Complete problems, data mining and parallel algorithms. Prerequisites: CS206 and CS231. This is a Writing Intensive (WI) course.

Important Dates

January 17: First lecture
April 27: Last Lecture


Unless explicitly specified, all assignments are due at the beginning of the class (BY 9:55a sharp) on the date due. No credit will be awarded for any late work.

  1. Lab#1 (Write-up Due in class on Thursday, February 1): Language Standards, Reference Compilers, Programming Pitfalls
  2. Lab#2: (Write-up Due in class on Thursday, February 8): Performance analysis of Linear Search algorithms.
  3. Lab#3: (Write-up Due in class on Thursday, February 15): Performance Analyses of Quicksort algorithms (Bentley's, Hybrid, Library sort, Dual-Pivot).
  4. Lab#5: (Write-up Due in class on Tuesday, February 20): Special WTF (Hell Week Edition)-Programming puzzlers.
  5. Lab#4: (Write-up Due in class on Thursday, February 27): Finding anagrams.
  6. Lab#6: (Write-up due in class on Thursday, March 8): Hash Tables - use, collisions and load factor experiment.
  7. Lab#7/8: (Write-up due in class on Thursday, March 22): Soundex & metaphone Algorithms- finding homophones in English.
  8. Lab#9: (Write-up due in class on Thursday, March 29): Graph Search (Depth-First, Breadth-First): Solving the W-O-M-A-N Puzzle.
  9. Lab#10: (Write-up due in class on Thursday, April 5): Graphs : Dijkstra's Shortest Path Algorithm
  10. Lab#11: (Write-up due in class on Thursday, April 12): Computing Fibonacci Numbers - Many Ways in Python using: iterators, generators, memoizers, and decorators.
  11. Lab#12: (Write-up due in class on Thursday, April 17): Cryprographic Hash Functions - Hands on with MD5 and SHA families.


Course Policies


Punctual Attendance and active participation are expected in every class. Anyone arriving later than 9:55a will be considered absent for that class. Participation includes asking questions, contributing answers, proposing ideas, and providing constructive comments. 30% of your course grade (see below) is based on attendance & participation.

As you will discover, I am a proponent of two-way communication and I welcome feedback during the semester about the course. I am available to answer student questions, listen to concerns, and talk about any course-related topic (or otherwise!). Come to office hours! This helps me get to know you. You are welcome to stop by and chat. There are many more exciting topics to talk about that I won't have time to cover in-class.

Please stay in touch with me, particularly if you feel stuck on a topic or project and can't figure out how to proceed. Often a quick e-mail, or face-to-face conference can reveal solutions to problems and generate renewed creative and scholarly energy. It is essential that you begin assignments early.


All graded work will receive a grade, 4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.7, 1.3, 1.0, or 0.0. At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:

Labs & Written Work: 35%
Presentations: 35%
Class Participation & Attendance: 30%
Total: 100%

Incomplete grades will be given only for verifiable medical illness or other such dire circumstances. Please have any instances of medical illness or dire circumstances communicated to me thorugh your Dean.

Submission, Late Policy, and Making Up Past Work

All work must be turned in either in hard-copy or electronic submission, depending on the instructions given in the assignment.  E-mail submissions, when permitted, should request a "delivery receipt" to document time and date of submission.  Extensions will be given only in the case of verifiable medical excuses or other such dire circumstances, if requested in advance and supported by your Academic Dean.

No assignment will be accepted after it is past due.

No past work can be "made up" after it is due.

No regrade requests will be entertained one week after the graded work is returned in class.

Study Groups

I encourage you to discuss the material and work together to understand it. Here are some thoughts on collaborating with other students:

If you have any questions as to what types of collaborations are allowed, please feel free to ask.



Created on January 3, 2018.