16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CSCI 140: Algorithms, Pomona College<br />

Claremont, CA 91711, USA<br />

Tzu-Yi Chen<br />

tzuyi@cs.pomona.edu<br />

http://www.cs.pomona.edu/~tzuyi/Classes/CC2013/Algorithms/index.html<br />

Knowledge Areas that contain topics and learning outcomes covered in the course<br />

Knowledge Area<br />

Algorithms and Complexity (AL) 29 - 32<br />

Software Development Fundamentals (SDF) 1.5<br />

Parallel and Distributed Computing (PD) 0 - 3<br />

Total Hours of Coverage<br />

Where does the course fit in your curriculum<br />

This is a required course in the CS major that is typically taken by juniors and seniors. The official prerequisites<br />

are Data Structures (CSCI 062, the 3rd course in the introductory sequence) and Discrete Math (CSCI 055).<br />

However, we regularly make exceptions for students who have had only the first 2 courses in the introductory<br />

sequence as long as they have also taken a proof-based math class such as Real Analysis or Combinatorics.<br />

Algorithms is not a prerequisite for any other required classes, but is a prerequisite for electives such as Applied<br />

Algorithms.<br />

What is covered in the course<br />

This class covers basic techniques used to analyze problems and algorithms (including asymptotics, upper/lower<br />

bounds, best/average/worst case analysis, amortized analysis, complexity), basic techniques used to design<br />

algorithms (including divide & conquer / greedy / dynamic programming / heuristics, choosing appropriate data<br />

structures), and important classical algorithms (including sorting, string, matrix, and graph algorithms). The goal<br />

is for students to be able to apply all of the above to designing solutions for real-world problems.<br />

What is the format of the course<br />

This is a one semester (14 week) face-to-face class with 2.5 hours of lecture a week.<br />

How are students assessed<br />

There is a written assignment (written up individually) due almost every class as well as 1 or 2 programming<br />

assignments (done in groups of 1-3) due during the semester; solutions are evaluated on clarity, correctness, and<br />

(when appropriate) efficiency. Students are expected to spend 6-10 hours a week outside of class on course<br />

material. There are also 1 or 2 midterms and a <strong>final</strong> exam. Students are expected to attend lectures and to<br />

demonstrate engagement either by asking/answering questions in class or by going to office hours (the professor's<br />

or the TAs').<br />

Course textbooks and materials<br />

The textbook is Introduction to Algorithms, 3rd Edition by Cormen, Leiserson, Rivest, and Stein. For the<br />

programming assignments students are strongly encouraged to use their choice of C, C++, Java, or Python, though<br />

other languages may be used with permission. Students are required to use LaTeX to format their first 2-3 weeks<br />

of assignments, after which its use is encouraged but not required.<br />

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

This course serves as a bridge between theory and practice. Lectures cover classical algorithms and techniques for<br />

reasoning about their correctness and efficiency. Assignments allow students to practice skills necessary for<br />

- 234 -

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

Saved successfully!

Ooh no, something went wrong!