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.
TAs:
To get to ENS 31NQ: Take the elevator in ENS to the lower basement (LB).
When doors open, exit right and keep going down the hallway.
It will curve to the right and you'll come to ENS 31NR (on the left).
Go through 31NR to a smaller room, which is 31NQ.
There are six desks, marked 1 through 6.
Messages from your TA
Lab Proctors will be in the labs to help with programming projects:
- Phillip Verheyden:  
pverheyden@gmail.com,
M 11-1, T 11-2, W 11-5, Th 11-2, F 11-5 in the 5th floor Painter lab.
- Fred Kuo:
fredfkuo@gmail.com,
M 1:30-6:00p, T 9:00-1:30p and 3:30-6:00p, W 9:00-10:00a
Th 9:00-10:00a and 3:30-6:00p, F 9:00-10:00a, Sun 3:00-6:00p
in Taylor basement.
TIP Tutor: For students in the TIP program, there is a tutor,
Ms. Colleen Reyna,
colleenreyna@gmail.com
She is in PAI 4.28 from 5-7 PM on Thursdays, and can also take questions
by email.
Syllabus
Text: Mark Allen Weiss,
Data Structures and Algorithm Analysis in Java, 2nd Ed.;
Amazon;
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
or Index
or PDF     
DO NOT print out the slides on CS department printers.
Vocabulary
Discussion Board on Blackboard
Programming assignments will mainly be done in Java.
All programming assignments must be your own individual work.
Program files are provided, in the directory /projects/cs315/ or
in the
FTP directory for Program Files,
ftp://ftp.cs.utexas.edu/pub/novak/cs315/
for use with the assignments.
It is legal to use any of these files as part of your programs.
How to Turn in Assignments
- Timing and Big O
- Recursion and Lists
- More Recursion and Lists
- Merging and Stacks
- Java List Library
- Basic Trees
- Trees and Symbolic Algebra
- Patterns
- Memos and Drums
- Do You Know the Way to
San Jose Muleshoe?
- MapReduce
MapReduce Paper
NYT Article on Hadoop
Google Code University
Hadoop
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
structure.
- 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
the performance.
- How to analyze an existing design or program, spot the
performance problems, and fix them.
- Gain experience in other programming paradigms:
- Lisp
- Patterns or Rewrite Rules
- MapReduce, Hadoop and data-intensive parallel programming
Topics:
- Introduction: why we need clever algorithms and
data structures.
- 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
- Graphs
- 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