CS 351: Design of Large Programs
Department of Computer Science
University of New Mexico
Spring 2017

Joel Castellanos
Department of Computer Science

CS-351 Syllabus for Spring 2017

Lecture Notes, Specifications, Source Code, Data and Resources:

Week 1:

  1. Notes: Introduction to CS-351
  2. Notes: The Hallowed CS351 Coding Standard
  3. Read (by class Thursday, Jan 19): Introduction to A* Pathfinding from Red Blob Games
  4. Lab (due Wednesday, Jan 25): Lab 1: Word Path using A*
  5. Data: OpenEnglishWordList.txt
  6. Code: ReadTextFileFX.java example text reader demoed in class.
  7. Data: wordPathTestArgs.txt test arguments.

Week 2:

  1. Lynda Login: https://lynda.unm.edu/
    Login before trying to use the video links below
  2. Video (by class Tuesday, Jan 24, 4 min): Lynda Video (login above) "Java Advanced Training" with David Gassner: Exploring the Simplified use of Generics
  3. Video (by class Tuesday, Jan 24, 3 min): Lynda Video (login above) "Java Advanced Training" with David Gassner: Using Underscores in Numeric Literals
  4. Video (by class Tuesday, Jan 24, 33 min): Lynda Video (login above) "Java Advanced Training" with David Gassner: Using Advanced Class Structures (watch all sections)
  5. Notes: Using IntelliJ IDE
  6. Notes and Lab: Multi Threaded Programming in Java
  7. Video: Lynda Video: Extending the Thread class
  8. Video: Lynda Video: Implementing the Runnable interface
  9. Video: Lynda Video: Interrupting a thread
  10. Video: Lynda Video: Synchronizing threads

Week 3:

  1. Web: Oracle JavaFX Tutorial Work through "Hello World, JavaFX Style", "Form Design in JavaFX", and "Animated Shapes and Visual Effects". Optionally, want to look at "Fancy Design with CSS" and "User Interface Design with FXML". These last two are optional since on future projects you may, if you want, use CSS and/or FXML, but you will not be required to.
  2. Notes: Conway's Game of Life

Week 4:

  1. Src: Animation.zip JavaFX example that uses both widgets and and a canvas. Drawing is done using the more primitive javafx.scene.canvas.GraphicsContext and javafx.scene.image.PixelWriter rather than creating JavaFX graphics element objects.

Week 5:

  1. Notes: Perspective Viewing
  2. Video: Using JavaFX
  3. lab: tutorial creating a 3D model of a water molecule.
  4. UtahTeapot.obj ASCII OBJ file of the Utah Teapot (1,024 triangles. File includes vertex normals)
  5. StanfordBunny.obj ASCII OBJ file of the Stanford Bunny (69,666 triangles. Vertex normals NOT given in file)

Week 6:

  1. Video: Introduction to Design Patterns (just watch the first 2m 30 sec part)
  2. Video: The Strategy Pattern
  3. Video: The Observer Pattern
  4. Notes: Zombie House specs
  5. Notes: Using Git and GitHub
  6. web: Collaborate in a Git team project (pull, push)
  7. web: GitHub Help: Syncing a fork
  8. Src: Zombie-House-Sarah_Nick_Hector.zip Fall 2016 version of Zombie House by Sarah, Nick and Hector

Week 7 & 8:

  1. Web: Twisting the MVC Triad - Model View Presenter (MVP) Design Pattern
  2. Paper: IEEE: Effectiveness of Test-First Approach to Programming
  3. Paper: IEEE: Test-Driven Development Concepts Taxonomy Future Direction.pdf
  4. Lab: Code Review Form (right-click on link and select "Save As...")
  5. Notes: Model View Controller
  6. GroupProject Self and Peer Evaluation Form (right-click on link and select "Save As...")

Week 10:

  1. Notes: Fractals
  2. Notes: Java Sockets
  3. Src: Client.java
  4. Src: ServerMaster.java
  5. Src: ServerWorker.java

Week 12:

  1. Notes: Requirements Engineering
  2. Web: Extreme Programming
  3. Web: On Finite State Machines and Reusability
  4. Web: Getting More Behavior out of Numbers
  5. Web: At-a-glance functions for modelling utility-based game AI
  6. Web: Ant Colony food-finding
  7. Src: Antworld Server and sample client