University of Utah School of Computing
EAE 2420:
Introduction to Computer Science II
INSTRUCTOR:    Adam Bargteil
Office hours: M/W 3-4, Tu 2-3, WEB 2666 (please email to confirm)
TEACHING ASSISTANT:    Jinzhi Zhang (Jinzhi.Zhang(at)utah.edu), Siddharth Bhavsar (siddharth4u2003(at)yahoo.com)
Office hours: M 10-noon, 3-7, Tu 2-5, W 10-noon, 3-5, Th: 2-7, WEB L208/210
WEB PAGE: http://www.eng.utah.edu/~cs2420-eae/
HELP: teach-cs2420-eae at list dot eng dot utah dot edu
LECTURE: M/W 1:25-2:45, WEB 1230
LAB:    F 12:55-1:45, 3:05-3:55, 4:10-5:00, MEB 3225
UNITS: 4
Midterm Exam: Wednesday, February 26, 1-3pm
Final Exam: Tuesady, April 29, 1-3pm
Class Roster

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
  • Programming in Java
PREREQUISITES:
CS 1410, permission of instructor
TEXT:
Recommended:
Data Structures & Problem Solving Using Java, 4th Edition
by Mark Allen Weiss
ISBN: 0321541405

Alternatives:
Data Abstraction & Problem Solving with Java (Walls & Mirrors) by Janet J. Prichard and Frank M. Carrano
Data Structures: Abstraction and Design Using Java by Koffman and WolfGang
Data Structures & Algorithms in Java by Michael T. Goodrich and Roberto Tamassia

Java Reference:
Head First Java
by Kathy Siearra and Bert Bates

OpenGL Quick Reference Guide
METHOD OF EVALUATION:
Assignments (Programming & Written)      50%
Quizzes 5%
Midterm Exam 20%
Final Exam 25%

Late Policy:
Assignments will generally be due Fridays at noon (5 seconds late is late). Any written portion should be handed in during the Friday lab. Late assignments will be penalized as follows:
Up to 24 hours late: 10%
Up to 48 hours late: 30%
Up to 72 hours late: 50%
More than 72 hours late: 100%


Cheating Policy:
The penalty for cheating is an Failing Grade for the course.

What is not considered cheating
  • Working with (one) partner to complete assignments
  • Talking with other students about assignments
  • Studying for exams with other students
  • Getting help on assignments from the TA or Professor
  • Reading about a topic on the internet
  • Teaching a skill, i.e. sharing some feature of eclipse or how to make a nicer webpage.
What is considered cheating
  • Sharing code (looking at code on someone's screen, emailing a code snippet, etc) with anyone other than your partner (both the sharer and the sharee are cheating).
  • "Giving away the answer" to written homework assignments
  • Downloading code from the internet and submitting it (or something close to it) as your own.
  • Allowing someone else (e.g. a friend who has taken this course) to do your assignments

Please also see the School of Computing Policy Statement on Academic Misconduct.
CLASS SCHEDULE (subject to change)

Week #1:  January 6 - January 10
Reading:Chapters 1, 2, 3 (Java), and 17 (Linked List)
Monday lecture: Introduction and Overview, Java
Wednesday lecture: Linked Lists
Friday lab: Java Programming in Eclipse (the LinkedList and ListIterator classes, my Eclipse Preferences, another set of preferences)
Week #2:  January 13 - January 17
Reading:Chapeter 5, 6.2, 7
Monday lecture: Iterators, Big-O
Wednesday lecture: Recursion
Friday lab: Working with images (ImageManipulation.java)
Week #3:  January 20 - January 24
Reading:Chapter 7
Monday lecture: Martin Luther King, Jr. Day --- no class
Wednesday lecture: Dynamic Programming
Friday lab: Dynamic Programming (DynamicProgramming.java)
Week #4:  January 27 - January 31
Reading:Chapter 7, 8
Monday lecture: Backtracking
Wednesday lecture: Sorting
Friday lab: Tic-tac-toe (TicTacToe.java)
Week #5:  February 3 - February 7
Reading:Chapter 8, 16
Monday lecture: Sorting
Wednesday lecture: Sorting
Friday lab: Timing Code (Timer.java)
Week #6:  February 10 - February 14
Reading:Chapter 18
Monday lecture: Sorting, Stacks and Queues
Wednesday lecture: Trees
Friday lab: Trees (BinaryTree.java)
Week #7:  February 17 - February 21
Reading:Chapter 19, see also Binary Search Trees
Monday lecture: President's Day -- no class
Wednesday lecture: Binary Search Trees
Friday lab: Practice Exam Solutions
Week #8:  February 24 - February 28
Reading:Chapter
Monday lecture: Review (Study Guide, Last year's exam)
Wednesday lecture: Midterm Exam
Friday lab: Intro to OpenGL/JoGL (A tutorial, My (short) Tutorial, Lab07.java)
Week #9:  March 3 - March 7
Reading:Chapter 19, see also Binary Search Trees
Monday lecture: Exam Answers, AVL Trees
Wednesday lecture: Red Black Trees
Friday lab: Cancelled
Spring Break:  March 10 - March 14
Week #10:  March 17 - March 21
Reading:Chapter 19, 21, see also Binary Search Trees
Monday lecture: AA Trees
Wednesday lecture: B-trees
Friday lab: More OpenGL/JoGL (Lab08.java, Lab08.html, Lab08.jnlp)
Week #11:  March 24 - March 28
Reading:The Internet
Monday lecture: Spatial Data Structures (Regular grids, Quadtrees, KD-trees, BSP-trees)
Wednesday lecture: Building Balanced KD Trees
Friday lab: Boids (Crowd.java)
Week #12:  March 31 - April 4
Reading:
Monday lecture: Transformations (slides)
Wednesday lecture: Lighting/Shading (slides)
Friday lab: Drawing and Lighting in 3D (Lab11.java, Lab11A.java)
Week #13:  April 7 - April 11
Reading:Chapter 20 and 21
Monday lecture: Heaps
Wednesday lecture: Hash Tables
Friday lab: Implementing a Heap
Week #14:  April 14 - April 18
Reading:
Monday lecture: Graphs: Storage, BFS, DFS, Shortest Paths, Topological Sort
Wednesday lecture: Graphs: Minimum Spanning Trees, Strongly Connected Components
Friday lab: Practice Exam Answers
Week #15:  April 21 - April 25
Reading:
Monday lecture: Surprise!
Wednesday lecture: Exam Review (Study Guide, Last year's final)
Friday lab: none

Assignments

Assignment 0: Java vs. ActionScript Due: 01/10/13 (in lab)
Assignment 1: Linked List Due: 01/17/13 (noon) DoublyLinkedList.java
Assignment 2: Edge Detection Due: 01/24/13 (noon) EdgeDetector.java
Assignment 3: Seam Carving Due: 01/31/13 (noon) SeamCarver.java
Assignment 4: Sudoku Due: 02/07/13 (noon) Sudoku.java
Assignment 5: Sorting Due: 02/14/13 (noon) Sorting.java
Assignment 6: Stacks and Queues Due: 02/21/13 (noon) StacksAndQueues.java
Assignment 7: Binary Search Tree Due: 03/07/13 (noon) BinaryTree.java
Assignment 8: AVL Tree Due: 03/21/13 (noon) AVLTree.java
Assignment 9: Bomb Game Due: 03/28/13 (noon) BombGame.java
Assignment 10: Boids with a KD Tree Due: 04/04/13 (noon) KDCrowd.java
Assignment 11: 3D Game Due: 04/23/13 (noon)