CS 315: Algorithms & Data Structures
CS 315 covers methods for storing large amounts of data in
data structures, the algorithms used to efficiently
access and manipulate that data, and analysis of the performance
of the algorithms.
Gordon S. Novak Jr., CSA 1.110; Office Hours: M T Th 1:00 - 1:50.
Lab Proctor will be in the lab to help with programming projects:
- Tomas McCandless:
Hours: PAI 5.38,
Mon: 9:00-10:00, 12:00-3:30, 5:30-8:30;
Tues: 9:00-11:00, 12:30-2:00;
Wed: 9:00-10:00, 1:00-4:00, 5:30-8:30;
Text: Mark Allen Weiss,
Data Structures and Algorithm Analysis in Java, 2nd Ed.;
Barnes & Noble.
Lecture Notes: Available in printed form in WEL 2.228.
Buying the printed notes is strongly recommended so that you can
take notes on them during class.
Lecture Notes by Contents
DO NOT print out the slides on CS department printers.
Follow CS 315 Discussions on Piazza
DrJava provides an interactive
development environment for Java. Documentation at the preceding link.
There is also a DrJava plugin for Eclipse at the preceding link.
Downloads: Use their downloads or these copies:
Windows (right-click and select Save Target As),
JAR file .
Programming assignments will mainly be done in Java,
with an option to do some in Lisp or Scheme.
All programming assignments must be your own individual work.
Program files are provided, in the directory /projects/cs315/ or
FTP directory for Program Files,
for use with the assignments.
It is legal to use any of these files as part of your programs.
How to Turn in Assignments
Testing and Debugging
- Timing and Big O
log-log paper (PDF)
semi-log paper (PDF)
- Recursion and Lists
- More Recursion and Lists
- Merging and Stacks
- Java List Library
- Basic Trees
- Trees and Symbolic Algebra
- Memos and Drums
- Do You Know the Way to
San Jose Muleshoe?
NYT Article on Hadoop
Google Code University
Lecture slides on PageRank
Goals of the Course:
- Understand the tools of the trade:
- Data Structures that allow certain operations on the data
to be done efficiently.
- Algorithms that perform operations and maintain the data
- Gain experience in using library packages
- the buy-versus-build decision
- Understand performance:
- Big O
- How to analyze a problem, design a solution, and estimate
- How to analyze an existing design or program, spot the
performance problems, and fix them.
- Gain experience in other programming paradigms:
- Patterns or Rewrite Rules
- MapReduce, Hadoop and data-intensive parallel programming
- Introduction: why we need clever algorithms and
- Performance: Big O: how much time and storage are needed as
data sizes become large
- Some Lisp: (+ x 3)
- Lists and Recursion; Stacks and Queues
- Trees and Tree Recursion
- Pattern Matching and Rewrite Rules
- Using Library Packages
- Balanced Trees and Maps
- Hashing and randomization; XOR
- Priority Queues
- Sorting, Merge
- Map, Reduce, and MapReduce
You can download Gnu Common Lisp for Linux
or GCL for Windows
or LispWorks for Mac.
Lisp is easier to use through the Emacs editor.
Gnu Emacs can be
dowloaded free, for Linux or Windows or Mac.
Midterm Study Guide
and Example Midterm Questions
Final Exam Study Guide
and Example Final Exam Questions