0% found this document useful (0 votes)
104 views8 pages

CS 312: Algorithm Analysis: Syllabus, Fall 2008

This document provides the syllabus for the CS 312: Algorithm Analysis course offered in the fall of 2008. It lists the course sections, staff, required text, and an overview of course topics. The course will cover algorithm design techniques like greedy algorithms, divide-and-conquer, and dynamic programming. It will analyze algorithm efficiency using asymptotic notation and explore applications like image processing, cryptography, computational biology, and more. An honors section is also described where students complete an independent project responding to a major idea in computer science instead of regular assignments.

Uploaded by

Jeff Pratt
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
Download as doc, pdf, or txt
0% found this document useful (0 votes)
104 views8 pages

CS 312: Algorithm Analysis: Syllabus, Fall 2008

This document provides the syllabus for the CS 312: Algorithm Analysis course offered in the fall of 2008. It lists the course sections, staff, required text, and an overview of course topics. The course will cover algorithm design techniques like greedy algorithms, divide-and-conquer, and dynamic programming. It will analyze algorithm efficiency using asymptotic notation and explore applications like image processing, cryptography, computational biology, and more. An honors section is also described where students complete an independent project responding to a major idea in computer science instead of regular assignments.

Uploaded by

Jeff Pratt
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1/ 8

CS 312: Algorithm Analysis

Syllabus, Fall 2008

Section Information

CS 312 Section 001 8:00-9:15 am, TTH 120 TMCB


CS 312 Section 002 9:30-10:45 am, TTH 120 TMCB
HONRS 345R Section 001 9:30-10:45 am, TTH 120 TMCB

Staff Listing

Sean Warnick, Instructor


Contact Information: cs312warnick@gmail.com, 422-6463, 2222 TMCB
Office Hours: TTH 1-2pm or by appointment

Tanja Brown, Teaching Assistant


Contact Information: tanja.brown@gmail.com,
Office Hours: To be announced

Blake Durtschi, Teaching Assistant


Contact Information: durtschi@gmail.com,
Office Hours: To be announced

Texts and Resources

The textbook for the course will be Algorithms by Dasgupta, Papadimitriou, and
Vazirani. An on-line draft is currently available at

www.cs.berkeley.edu/~vazirani/algorithms.html.

We will also draw on excerpts from other texts that will be made available on the course
website on Blackboard.

Overview

CS 312 is a course about problems and their solutions; it is a course about information
and how it is organized to meet specific objectives. The material is very deep, and it can
launch a career of learning about how to be an expert problem solver. This expertise
begins with a precise and concrete understanding of what is meant by a problem, how to
formulate it technically, and how to analyze the nature of a well-formulated problem (e.g.
does it have a solution, is the solution unique, can a solution be computed in a reasonable
amount of time and with reasonable computational resources?). Likewise, such expertise
also demands an equally precise and concrete understanding of what is meant by a
solution to a well-formulated problem, and how to characterize and analyze a well-
defined solution (e.g. what is the difference between an algorithmic and analytical
solution, what is the nature of a computation device that can execute an algorithmic
solution or compute an analytical solution, how is the correctness of the solution
measured, how is the efficiency of the solution measured?) This course lays the
foundation for answering such questions by exploring a rich set of examples and
techniques, and by giving students the opportunity to design, analyze, and implement a
number of concrete solutions to important problems.

Because the career of an expert problem solver can follow a variety of paths, the set of
examples and practice problems in CS 312 are intentionally chosen from a broad range of
application areas. Students will be exposed to problems from Scientific Computing,
Computer Science, Engineering, Data Communications, Medicine, Cryptography, Media
and Entertainment, Computational Biology, Operations Research and Management,
Business Intelligence, Finance, or other applications. Moreover, although the course will
focus on algorithms designed to execute on discrete sequential machines, we will also
discuss the implications of designing algorithms to execute on other types of computers,
such as analog computers, parallel machines, quantum computers, biological systems,
and even human organizations. In this way, students may appreciate the fundamental
nature of the ideas and skills they are developing about information and its organization,
about problems and their solutions. Moreover, by exposing students to a wide arena of
applications of algorithm analysis and design, we hope that students may find areas of
interest and inspiration where they can target their career objectives and subsequent
educational preparation.

Introduction to the Honors Section of CS 312

Enrolling in the honors section of CS 312 allows a student to substitute a different, more
independently designed activity for the out-of-class participation experiences requirement
of the regular class. Any student, whether enrolled in BYU’s Honors Program or not,
may enroll in the honors section of the course. These students meet with the regular
section of CS 312 of their choice (Section 001 or Section 002) for lectures, and they
complete all the regular assignments except the out-of-class participation requirements.
Instead of the regular out-of-class participation exercises, students in the honors section
each design their own “response” to a “great idea” from computer science. This response
will include a historical context, critical analysis, and a personal response. Note that
these responses can be very creative, including, for example, application development,
independent research, etc. or they may be a very simple, but thoughtful, written response
(see https://honors.byu.edu:443/Main/files/GreatWorksResponseGuidelinesForm.pdf for
more information). Moreover, honors students will have the opportunity to present their
responses at the end of the semester and, for those who decide to pursue honors
graduation, they may include their responses in their great works portfolio.
Sources for “Great Ideas” from computer science include (but are not limited to):
1. Any one of the topics from The New Turing Omnibus, by A.K. Dewdney
2. “Richard Bellman on the Birth of Dynamic Programming”, Stuart Dreyfus
3. Extractions from the Theory of Games and Economic Behavior, Von Neumann
and Morgenstern,
4. Chaos: Making a New Science, by James Gleick
5. Classics from http://www.cs.berkeley.edu/~christos/classics/cs298.html
6. Any one of the five units from Information Science, by David Luenberger
a. Entropy: The measure of information
b. Economics: The value of information
c. Encryption: The securing of information
d. Extraction: The manipulation of information
e. Emission: The transmission of information
7. Other ideas—propose something!

Honors section students propose their extended participation experience early in the
semester and, upon approval from the course instructor, work all semester in their project.
Once a month there is an optional “Honors Lunch” planned where honors students and
the instructor may discuss the progress of their projects over lunch. Grades between the
regular and honors sections are determined in exactly the same way, except that the
honors response and presentation are graded and substituted for the out-of-class
participation experiences of the regular sections.

Expected Learning Outcomes

I. Foundational Knowledge
1. Problems and Solutions: Understand what is meant by a technical problem
formulation and the difference between an analytical vs. an algorithmic solution
to a problem.
a. Models: Appreciate the role of mathematics as a way of efficiently
describing and reasoning about a problem or a solution concept.
b. Analysis: Appreciate the nature of analysis, or mathematical reasoning
about models of algorithms, models of computing machines, and possibly
models of the computing environment, in characterizing properties of
solutions, especially correctness, stability, and efficiency.
c. Synthesis: Appreciate the power and limitations of computation for
implementing algorithmic solutions to problems, as well as various stages
of synthesis—problem formulation, algorithm design, implementation on
a specific computing machine, and verification or testing.
2. Analysis Tools: Develop fluency with three analysis tools and understand how
other analytic disciplines such as mathematics, probability, and statistics
interrelate.
a. Asymptotic Notation: Understand the process of modeling the efficiency
of an algorithm and classifications based on those models (P, NP, etc.)
b. Elementary Probability Theory: Understand definitions of sample space,
probability measure, random variables, and expectation for use in average
case analysis and the analysis of randomized algorithms. Especially note
how assumptions about probability measure impact analysis results.
c. Difference Equations: Know how to solve linear constant coefficient
difference equations and understand their role in modeling recursive
structures, characterizing amortization, describing numerical methods, and
representing dynamic programs (why they are called dynamic…).
3. Synthesis Paradigms: Develop fluency with categories of algorithms that are
unified by the way they process information, including greedy algorithms, divide-
and-conquer algorithms, randomized algorithms, dynamic programs, graph-search
algorithms, and linear programs. This fluency includes
a. Exposure to a broad array of specific applications of algorithm design
such as Data Compression (Huffman Codes), Image Processing (Fast
Fourier Transform, Intelligent Scissors), Security (Public Key
Cryptography), Graphics (Monte Carlo Integration), Computational
Biology (DNA Sequence Alignment, RNA Secondary Structure
Estimation), Operations Research (Project Selection, Airline Scheduling,
Inventory Management, Transportation Networks, Scheduling),
Computational Economics and Finance (Matching, Clustering,
Regression, Time Series Analysis, Portfolio Optimization), etc.
b. Practice with implementation issues, such as choice of data structures and
code constructs (e.g. recursive vs. iterative implementations), by
programming a solution to a specific problem for each synthesis paradigm
in the Microsoft Visual Studio programming environment.
II. Application and Integration
1. Apply problem formulation, solution development and analysis skills outside
the classroom.
2. Understand applications of algorithms to a variety of disciplines including those
listed in objective I.3.a.
3. Understand connections between mathematics, statistics, and probability to
algorithms and the ways we organize information and computation to solve well
formulated problems.
III. Human Dimension, Caring, and Learning to Learn
1. Learn more about which fields and applications of algorithm analysis and design
the student finds inspiring, enjoyable, and important.
2. Begin (or continue) to develop the attitudes, desires, and skills necessary to be an
independent learner and thinker.
3. Consider the moral and spiritual implications of ideas from this course.
Learning Activities

Learning activities for this course begin with in-class activities including lecture,
discussion, group and individual problem solving exercises, and exams. Out-of-class
activities include reading assignments, homework problems, programming projects, and
“out-of-class participation” experiences. An average student should budget 2+ hours
outside of class for every hour in class to earn an average grade (6+ hours/week).

Students are encouraged to work in groups to learn and master the material. However,
each assignment should reflect the student’s own understanding of the material and be his
or her own work. When working in groups, students should list their collaborators on
their write-ups and properly reference all sources.

Reading Assignments

Reading assignments are listed on the course schedule, although they may be modified in
class as the learning experience is tailored to each group of students. It is the student’s
responsibility to read ahead and come to class prepared for the discussion that day.
“Jumping off” points will also typically be highlighted as places where students can go to
learn more about a particular topic and dig deeper into the material. Students are
encouraged to come to class prepared to share insights they gleaned from their
preparation and reading.

Homework Problems

Homework will frequently be assigned. These problems are collected from various
sources to give students practice thinking about and using the ideas discussed in class.
Homework is due at the beginning of class on the scheduled due date as listed in the
schedule; late assignments will not be accepted without prior arrangements having been
made.

Programming Projects

There are five programming projects this semester. Each project will be described in a
handout that outlines the problem to be solved and offers some direction about the design
of a solution. Each student is expected to complete the projects in C# using the Visual
Studio environment. Grades are based on the completion of a working program and a
brief report describing your solution and addressing any questions or analyses described
in the project description.

Note that, as with other assignments, students are encouraged to work in groups to learn
the material and understand the concepts. Nevertheless, your code should be your own; if
you can’t explain everything about it or if you copied code from a friend, then you are
cheating. Also, note that all projects must be completed to pass the class.
Out-of-class Participation Experiences

The content of this class, algorithmic analysis and synthesis, has been described as the
backbone of Computer Science. In fact, it is the backbone of all of science and
engineering; the ways we organize information to solve problems is the heart of the
scientific endeavor.

As a result, you will be given credit for connecting material from this class to other
professional activities. These experiences are student selected “extra-mile” activities that
tie course material with other educational pursuits and interests. This can include
attending Computer Science or other appropriate professional colloquia, augmenting a
project from another class to include an algorithm analysis or novel synthesis component
using ideas from CS 312, participating in the student chapter of ACM or other
professional organizations that enable you to teach about Computer Science and the role
algorithms play in our world today (e.g. though high school or grade school outreach
programs, etc.), watching a relevant documentary on themes related to algorithms and
their history (e.g. Nova, Scientific American Frontiers, etc.), using your training to solve
problems of personal interest (e.g. matching algorithms for various purposes, personal
finance calculator, visiting teaching route assignment, etc.), pursuing extra reading on an
algorithms topic of personal interest (e.g. classic papers in CS, famous algorithms such as
Google’s page rank, etc.), etc. The idea behind these experiences is not to give you more
to do. Instead, it is to recognize you for things that you are already doing (or should be
doing), and encouraging you to bring your CS education to the table when you do them.

You are given credit for these experiences by turning in simple (but professional) reports
on your activities. You should briefly describe what you did and the connection to CS
312. There is no set length of the report, but use good technical writing technique; don’t
ramble but include enough information to be complete. For example, a report on a CS
Colloquium might be about a page in length and give a brief summary of the talk
followed by a critical analysis section where the student may elaborate a personal critique
or appraisal of the results that were presented. On the other hand, a report on an
augmentation to another class project might be 5 pages in length and go into extensive
detail about the extra effort made to conduct a theoretical and empirical analysis of the
algorithmic efficiency of a particular procedure, or it may include a rigorous formulation
of the problem followed by a proof of correctness of the chosen solution. Each student
will be expected to turn in a total of 5 single-spaced pages reporting on their participation
experiences. Writing quality and professionalism will affect the grade.

Exams

There will be two midterms and a final. The midterm exams will be proctored in the
testing center, have a three hour time limit, and will be closed-book closed-notes. The
final exam will be in-class according to the University Calendar. Students registered for
the honors section of the course may take their final at either time and will present their
final reports on Friday December 19th. The final exam will be comprehensive, and one
page of hand-written notes will be allowed.
Recitation

Frequently, a Friday recitation will be provided by the TA’s as outlined on the schedule.
The exact location and times of the recitation will depend on the class and be announced.
These meetings are optional and simply give the student additional exposure and practice
with many of the ideas from the lecture, reading material, or homework exercises.

Study Groups

On the first day of class, every student will be assigned to a study group. This group can
be an additional resource to master the material and excel in the class.

Honors Lunch

The First Friday of each month will be a “brown-bag” lunch for the students enrolled in
the honors section. This is a time for the students to discuss their projects with both the
instructor and with each other. This is also a great time to talk about post-graduation
plans, graduate schools, career possibilities, etc. and get the perspectives of both ones
peers and the instructor.

Course Policies

There are a number of university and course policies that impact the learning experience
in CS 312. We highlight some important ones below.

Grades

Grades will be weighted by the following distribution and scale:

Final Exam 25% 100-93 A 83-80 B- 70-67 D+


Midterm #1 15% 93-90 A- 80-77 C+ 67-63 D
Midterm #2 15% 90-87 B+ 77-73 C 63-60 D-
5 Programming Projects 25% 87-83 B 73-70 C- 60- E
Homework 15%
Participation Experiences 5%

We reserve the right to curve grades in your favor. The University policies on UW and I
grades will be strictly followed.

Early and Late Submissions

There are no special policies related to turning in homework or programming projects


early. Likewise, late assignments are generally not accepted without prior arrangements.
Nevertheless, each student has 5 free late days (not including holidays or weekends) to
use at their discretion anytime during the semester before the last day of classes.
Cooperation

Students in CS 312 are encouraged to work together to learn concepts and master the
material. Nevertheless, every student is expected to write their own code, do their own
work, and write up their own reports. If you do happen to work closely with other
students on a particular assignment, please be sure to list them as collaborators on your
report. Likewise, if you find ideas and concepts from Google or another source that you
integrate into your solutions, always remember to properly cite your sources.

Honor and Academic Honesty

The Honor Code includes a statement of standards regarding academic honesty.


Academic honesty includes writing your own programs, properly citing sources in reports
and doing your own work on tests. Examples of academic dishonesty include sharing
code for projects with other students, turning in someone else’s writing as your own
report and cheating on an exam. The first violation of academic honesty standards will
result in your course grade being lowered one grade level and you will be required to
either redo the work or receive a zero on the assignment. The second violation will result
in failing the class. All violations of academic honesty are documented and reported to
the Honor Code office.

Harassment

Harassment of any kind is inappropriate. Specifically, BYU’s policy against sexual


harassment extends not only to employees of the university but to students as well. If
you encounter sexual harassment, gender-based discrimination, or other inappropriate
behavior, please talk to your professor, contact the Equal Employment Office at 422-5895
or 367-5689, or contact the Honor Code Office at 422-2847.

Disabilities

BYU is committed to providing reasonable accommodation to qualified persons with


disabilities. If you have any disability that may adversely affect your success in this
course, please contact the University Accessibility Center at 422-2767. Services deemed
appropriate will be coordinated with the student and instructor by that office.

You might also like