University of Utah School of Computing
CS 2420-EAE:
Introduction to Computer Science II
INSTRUCTOR:    Adam Bargteil (Office hours: after class & Tu 2-3, MEB 3458)
TEACHING ASSISTANT:    Cable Thompson (Email: cpt@cs.utah.edu, Office hours: M/W 11:45-1:15, Tu 6-7, Th 11-1, 5-7)
WEB PAGE: http://www.eng.utah.edu/~cs6967/
HELP:TA Queue   Email: teach-2420-eae at list dot eng dot utah dot edu
LECTURE: M/W 1:25-2:45, WEB 112
LAB:    F 2:00-2:50, WEB 130
UNITS: 4
Final Exam: May 5, 1-3pm
GRADES

Note: You may also ask the TAs for the regular CS 2420 general Java questions.
COURSE OVERVIEW:
The second course required for students intending to major in computer science and computer engineering. Introduction to the problem of engineering computational efficiency into programs. Classical algorithms (including sorting, searching, and graph traversal) and data structures (including stacks, queues, linked lists, trees, hash tables, and graphs). Analysis of program space and time requirements. Extensive programming exercises that require the application of elementary techniques from software engineering.

TOPICS TO BE COVERED:

  • Algorithms
  • Algorithm Analysis
  • Data Structures
  • Computer Graphics and Animation
  • Advanced Programming in Java
PREREQUISITES:
CS 1410, permission of instructor
TEXT:
Data Structures & Problem Solving Using Java, 3rd Edition
by Mark Allen Weiss
ISBN: 0-321-32213-4
METHOD OF EVALUATION:
Programming Assignments      40%
Written Assignments 10%
Labs 10%
Midterm Exam 20%
Final Exam 20%

Late Policy:
Assignments will be due Thursday at 11:59 pm. You may turn in assignments by Friday at 11:59 pm without penalty. Assignments turned in on Saturday or later will not be graded.
CLASS SCHEDULE (subject to change)

Week #1:  January 12 - January 16
Reading:Chapters 1, 2, and 3  (Java Chapters)
Monday lecture: Introduction and Overview, Java
Wednesday lecture: Java, Packages, jogl, and Eclipse

Programming Assignment: None  
Friday lab: Writing Programs in Eclipse

Week #2:  January 19 - January 23
Reading:Chapter 4  (Generics and Inheritance)
Monday lecture: None
Thursday lecture: jogl code

Programming Assignment: Java & jogl Warm-up in Eclipse Due Thursday
Friday lab: Drawing in OpenGL

Week #3:  January 26 - January 30
Reading:Chapters 5, and 17 (Algorithm Analysis and Linked Lists)
Monday lecture: Inheritance, Algorithm Analysis, Big-O Notation, 2D Transformations
Wednesday lecture: More Big-O, Linked Lists, 3D Transformations

Programming Assignment: Drawing with Boxes    Due Thursday
Friday lab: Transformations in OpenGL

Week #4:  February 2 - February 6
Reading:Chapters 6 and 7 (Java Collections API, Recursion)
Monday lecture: Java Collections API, Iterators
Wednesday lecture: Recursion

Programming Assignment: Linked List and Transformations Due Thursday
Friday lab: Working with Images

Week #5:  February 9 - February 13
Reading:Chapter 7 and 8
Monday lecture: More Recursion
Wednesday lecture: Sorting Algorithms

Programming Assignment: Seam Carving
My Implementation
Due Thursday
Friday lab: 2D Games

Week #6:  February 16 - February 20
Reading:Chapter 8
Monday lecture: No Lecture
Wednesday lecture: Still Sorting

Programming Assignment: 2D Games Due Thursday
Friday lab: Collision Detection

Week #7:  February 23 - February 27
Reading:Chapter 16 & 18
Monday lecture: Implementations of Stacks and Queues
Wednesday lecture: Trees

Programming Assignment: Collision Detection through Sorting Due Thursday
Friday lab: User Interface

Week #8:  March 2 - March 6
Reading:Chapter 18 & 19
Monday lecture: More Trees
Wednesday lecture: Even More Trees

Programming Assignment: Stacks, Queues, Menus and Buttons Due Thursday
Friday lab: Midterm Review: Come with questions for Cable

Week #9:  March 2 - March 6
Reading:Chapter 1-8, 16-19
Monday lecture: Midterm Review (Study Guide)
Wednesday lecture: Midterm Exam

Programming Assignment: None Due Thursday
Friday lab: Cancelled: Enjoy your Spring Break!

Week #10:  March 23 - March 27
Reading:Chapter 19
Monday lecture: AVL Trees
Wednesday lecture: Red-Black Trees

Programming Assignment: None Due Thursday
Friday lab: File I/O and parsing.

Week #11:  March 30 - April 3
Reading:Chapter 19
Monday lecture: Red-Black Trees
Wednesday lecture: AA Trees

Programming Assignment: See Next Week Due Thursday
Friday lab: Debugging Insert

Week #12:  April 6 - April 10
Reading:Chapter 14
Monday lecture: Graphs
Wednesday lecture: Graph Algorithms

Programming Assignment: Red-Black Trees
My Implementation
Due Thursday
Friday lab: Spring-Mass Systems

Week #13:  April 13 - April 17
Reading:Chapter 21
Monday lecture: Strongly Connected Components, Minimum Spanning Trees, Min-Cut/Max-Flow
Wednesday lecture: Heaps

Programming Assignment: Spring Mass Games Due Thursday
Friday lab: Binary Heap

Week #14:  April 20 - April 24
Reading:Chapter 20
Monday lecture: Hash Tables
Wednesday lecture: Quad Trees

Programming Assignment: Graph Algorithms
My Implementation
Due Thursday
Friday lab: Hash Tables

Week #15:  April 27 - April 29
Reading:
Monday lecture: K-D Trees (Dave Mount's lecture notes, see page 71)
Wednesday lecture: Final Exam Review (Study Guide)

Programming Assignment: Handling Collisions in Hash Tables Due Wednesday
Friday lab: None