CS 314: Data Structures
CS 314 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.
Instructor:
Gordon S. Novak Jr., CSA 1.110; Office Hours: T Th 12:30 - 2:00.
TAs:
Lab Proctors will be in the labs to help with
programming projects:
- Rebecca Jensen:
rebeccarosejensen@gmail.com
Monday: 9:30-1:30, 4:30-6:30,
Tuesday: 3:30-5:30,
Wednesday: 9:30-1:30,
Friday: 10:00-6:00.
- Atticus Crowe:
atticus.crowe@gmail.com
Monday: 9:00-1:00,
Tuesday: 8:00-11:00,
Wednesday: 9:00-7:00,
Thursday: 8:00-11:00.
TIP Tutor: For students in the TIP Scholars program, there is a tutor,
Grades on Canvas.
Syllabus
Text: Mark Allen Weiss,
Data Structures & Problem Solving Using Java, 4th Ed.;
Amazon via GRACS;
textbooks.com.
Assigned Reading
iClicker:
Each student is required to buy/rent an iClicker (the old model,
multiple choice version). This will be used for attendance and to
reinforce and practice with the class material. If you prefer to get
the newer iClicker2 or already have one for another class, that will
work too.
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.
Lecture Notes Annotated on NB
How to Make an A
Clicker Questions
Vocabulary
Get a CS Account
Follow CS 314 Discussions on Piazza
Try Some Lisp
Pointer Basics
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),
Mac OSX,
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/cs314/ or
in the
FTP directory for Program Files,
ftp://ftp.cs.utexas.edu/pub/novak/cs314/
for use with the assignments.
It is legal to use any of these files as part of your programs.
Note that if the Cons.java file is out of date, you can find
the right one as Cons.asgi.java where i is the
assignment number.
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
Notes on Assignment
- Merging and Stacks
- Java List Library
- Basic Trees
- Trees and Symbolic Algebra
Handout (PDF)
- Patterns
- Memos and Drums
- Do You Know the Way to
San Jose Muleshoe?
Selected Answers
Scenic Downtown Muleshoe
- MapReduce
MapReduce Paper
NYT Article on Hadoop
Google Code University
Hadoop
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
structure.
- Gain experience in using library packages
- the buy-versus-build decision
- Understand performance:
- Big O
- How to analyze a problem, design a good solution, and estimate
the performance.
- How to analyze an existing design or program, spot the
performance problems, and fix them.
- Gain experience in several programming paradigms:
- Java and the Java Libraries
- Lisp
- Patterns or Rewrite Rules
- MapReduce, Hadoop and data-intensive parallel programming
All of the programming languages are fundamentally the same.
Our goal for the course is to learn principles of data structures
that are the same across all languages.
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
and
Students' Final Exam Review