16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

What is the format of the course<br />

The material is presented in two 1.5 hour lectures per week with weekly quizzes and a programming assignment,<br />

supported by a one-hour section where details pertinent to assignments and exams are covered by TAs teaching<br />

smaller groups of students. An alternative format is to use online lectures supplemented by two 1.5 hour sections,<br />

one devoted to discussion of lecture material, the other devoted to assignments.<br />

How are students assessed<br />

The bulk of the assessment is weekly programming assignments, which usually involve solving an interesting<br />

application problem using an efficient algorithm learned in lecture. Students spend 10-20 hours per week on these<br />

assignments and often consult frequently with section instructors for help.<br />

• Monte Carlo simulation to address the percolation problem from physical chemistry, based on efficient<br />

algorithms for the union-find problem.<br />

• Develop generic data types for deques and randomized queues.<br />

• Find collinear points in a point set, using an efficient generic sorting algorithm implementation.<br />

• Implement A* search to solve a combinatorial problem, based on an efficient priority queue<br />

implementation.<br />

• Implement a data type that supports range search and near-neighbor search in point sets, using kD trees.<br />

• Build and search a “WordNet” directed acyclic graph.<br />

• Use maxflow to solve the “baseball elimination” problem.<br />

• Develop an efficient implementation of Burrow-Wheeler data compression.<br />

Exercises for self-assessment are available on the web, are a topic of discussion in sections, and are good<br />

preparation for exams. A mid-term exam and a <strong>final</strong> exam account for a significant portion of the grade.<br />

Course textbooks and materials<br />

The course is based on the textbook Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne (Addison-<br />

Wesley Professional, 2011, ISBN 0-321-57351-X). The book is supported by a public “booksite”<br />

(http://algs4.cs.princeton.edu), which contains a condensed version of the text narrative (for reference while<br />

online) Java code for the algorithms and clients in the book, and many related algorithms and clients, test data sets,<br />

simulations, exercises, and solutions to selected exercises. The booksite also has lecture slides and other teaching<br />

material for use by faculty at other universities.<br />

A separate website specific to each offering of the course contains detailed information about schedule, grading<br />

policies, and programming assignments.<br />

Why do you teach the course this way<br />

The motivation for this course is the idea that knowledge of classical algorithms is fundamental to any computer<br />

science curriculum, but it is not just for programmers and computer science students. Everyone who uses a<br />

computer wants it to run faster or to solve larger problems. The algorithms in the course represent a body of<br />

knowledge developed over the last 50 years that has become indispensable. As the scope of computer applications<br />

continues to grow, so grows the impact of these basic methods. Our experience in developing this course over<br />

several decades has shown that the most effective way to teach these methods is to integrate them with<br />

applications as students are first learning to tackle significant programming problems, as opposed to the oft-used<br />

alternative where they are taught in a theory course. With this approach, we are reaching four times as many<br />

students as do typical algorithms courses. Furthermore, our CS majors have a solid knowledge of the algorithms<br />

when they later learn more about their theoretical underpinnings, and all our students have an understanding that<br />

efficient algorithms are necessary in many contexts.<br />

Body of Knowledge coverage<br />

KA Knowledge Unit Topics Covered Hours<br />

SDF Algorithms and Design Encapsulation, separation of behavior and implementation. 1<br />

PL<br />

Object-oriented<br />

programming<br />

Object-oriented design, encapsulation, iterators. 1<br />

- 238 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!