BYU Home page BRIGHAM YOUNG UNIVERSITY  
Navigation
CS 312: Algorithm Analysis

Course Description:

CS 312 is an introductory algorithms analysis course; it is about problems and their solutions, about information and how it is organized to meet specific objectives. Students learn what a well formulated problem is, as well as the difference between analytic and algorithmic solutions to such problems. We analyze the quality of algorithmic solutions using various notions of correctness and efficiency, and we explore the application of these ideas in a variety of settings. These settings include scientific computing, signal processing (audio and image), cryptography, computer graphics, data compression and coding, search engine ranking, DNA sequence alignment, inventory management, scheduling of manufacturing systems, radiation therapy, bandwidth allocation, computational finance, clustering, and games. In the design of algorithmic solutions to well formulated problems, connections are drawn between data structures and computational performance; the role of mathematical models in making these connections is emphasized. CS 312 provides a strong foundation for the second semester, advanced algorithms elective, CS 412 Linear Programming and Convex Optimization.

Lectures:

TTH 8-9:15 (Section 1)
TTH 9:30-10:45 (Section 2)
HONRS 345 may meet with either section

Text:

Algorithms by Dasgupta, Papadimitriou, and Vazirani.

Supplemental texts include:
Introduction to Dynamic Systems: Theory, Models, & Applications by Luenberger
Algorithm Design by Kleinberg and Tardos
Introduction to Algorithms by Cormen, Clifford, Leiserson, Rivest, and Stein
Fundamentals of Algorithmics by Brassard and Bratley
Dynamic Programming and Optimal Control by Bertsekas.










Typical Schedule:

Week 1 Reading Assigned Due
T Problems and Solutions The Turing Omnibus, Chapter 30; Dynamic Systems, Chapter 1, 2.1-2.3    
TH Algorithm Analysis Algorithms, Chapter 0; Dynamic Systems, Chapter 2.4-2.7 HW1,LAB1  
F Recitation: C# and Visual Studio      

Week 2      
T Difference Equations      
TH Solving Difference Equations Algorithms, Chapter 2.1-2.5 HW2 HW1
F Recitation: Difference Equation Practice      

Week 3      
T Master Theorem      
TH Average Case Analysis Algorithms, Chapter 2.6 HW3,LAB2 HW2
F Recitation: More Difference Equation Practice      

Week 4      
T Signal Processing      
TH FFT Algorithms, Chapter 1.1-1.4 HW4 HW3,LAB1
F Recitation: Elementary Probability Theory Practice      

Week 5      
T Cryptography      
TH Randomized Algorithms Algorithms, Chapter 1.5 HW5,LAB3 HW4
F Recitation: Data Structures and Complexity      

Week 6      
T Randomized Algorithms      
TH Page Rank Algorithms, Chapter 3-4 HW6 HW5,LAB2
F Recitation: Midterm Review      

Week 7      
T Shortest Paths      
TH Minimum Spanning Trees Algorithms, Chapter 5 HW7 HW6
TH-S Midterm 1 Covers material through Randomized Algorithms    

Week 8      
T Knapsack      
TH Huffman Codes Algorithms, Chapter 6 HW8,LAB4 HW7,LAB3
F Recitation: Homework/Project Q&A      

Week 9      
T Dynamic Programming      
TH Computational Biology Dynamic Programming, Chapter 1 HW9 HW8
F Recitation: Data Structures and Dynamic Programming      

Week 10      
T Sequential Decision Making      
TH Inventory Management Dynamic Programming, Chapter 2 HW10 HW9
F Honors Lunch      

Week 11      
T TSP      
TH Linear Programming Algorithms, Chapter 7 HW11,LAB5 HW10,LAB4
F Recitation: Midterm Review      

Week 12      
T Simplex      
TH Linear Regression Algorithms, Chapter 8 HW12 HW11
TH-S Midterm 2 Covers material through TSP    

Week 13      
T NP-Complete Problems      
TH Backtracking Algorithms, Chapter 9 HW13 HW12
F Honors Lunch      

Week 14      
T Branch and Bound      
TH Examples     HW13,LAB5
F Recitation: Final Exam Review      


Assignments:

Reading: There are daily reading assignments.

Homework: There are weekly homework assignments, generally drawn from the course texts.

Projects: There are five programming assignments in C# using Microsoft Visual Studio.
    Project 1: Scientific Computing
    Project 2: FFT and Audio Processing
    Project 3: Intelligent Scissors for Image Processing
    Project 4: DNA Sequence Alignment on Corona Viruses, including SARS
    Project 5: Portfolio Optimization in Computational Finance

External Observations: By the end of the semester, each student is required to submit a set of reports describing how the student has observed the ideas from CS 312 applied in other settings (5 pages, single spaced). Generally this will be five distinct single-page reports, each one summarizing a distinct activity, such as a talk from the CS Colloquium, or a connection to a project in another class, etc.

Honors Section:

Any student in either of the regular sections may register for the Honors Section by enrolling in HONRS 345 and dropping CS 312. Students in the Honors Section meet with the regular section for lectures and exams, and they participate in all the same assignments except the External Observations. Instead, each student in the Honors Section selects a "Great Idea" from Computer Science, such as any of those listed in The New Turing Omnibus by Dewdney, and explores the idea in some depth. Students discuss their progress with the instructor and each other periodically during Honors Lunch, and they present their final results to the Honors Section at the end of the semester. A response to the Great Idea (e.g. paper, about five pages; or a coded application; etc.) is submitted for grading. The Honors Section is not designed to be more work than the regular section; rather, it is an opportunity for students who want more interaction with the instructor (e.g. for potential letters of recommendation for graduate school) to have that opportunity. Also, it provides a vehicle for students participating in the Honors Program to earn their honors credits and one of their Great Works responses while meetings their core CS requirements.

Recitation:

Every Friday a recitation is provided by the TAs to review key concepts, practice solving problems, discuss implementation details for the programming projects, emphasize particular points, and review for the exams. As with lectures or office hours, attendance is optional.

Tests:

There are two midterm exams and a comprehensive final. Each test is usually proctored in the testing center. Each exam is about three hours long (although generally up to five hours is allowed, if necessary).

Preparation Time:

"The expectation for undergraduate courses is three hours of work per week per credit hour for the average student who is appropriately prepared; much more time may be required to achieve excellence. These three hours may include one hour of lecture plus two hours of work outside class, three hours in a laboratory with little outside work, or any other combination appropriate to a particular course." (page 56, University Catalog)

Grades:

Grades are by the following distribution and scale:
    Final Exam 25%
    Midterm #1 15%
    Midterm #2 15%
    5 Programming Projects 25%
    Homework 25%
    External Observations (or Great Idea response for the Honors Sections) 5%

100-93 A 93-90 A- 80-87 B+
87-83 B 83-80 B- 80-77 C+
77-73 C 73-70 C- 70-67 D+
67-63 D 63-60 D- 60-0 E
We reserve the right to curve grades in your favor. The University policies on UW and I grades will be strictly followed.
Copyright © 2006. Brigham Young University Department of Mathematics. All Rights Reserved.