1. CC 410 - Advanced Programming > 
  2. Project Milestones > 
  3. Previous Semesters > 
  4. Fall 2023

Fall 2023

  • Final Project
    • Hello Real World
      • Restaurant Classes
        • Documentation & Testing
          • Inheritance
            • Design Patterns
              • Test Doubles
                • GUI Basics
                  • Event-Driven Programming
                    • Orders & Combos
                      • Checkout
                        • Website Basics
                          • Form Data
                            • RESTful Architecture
                              • Validation & Serialization

                                8.0.0

                                Last modified by: Russell Feldhausen Aug 23, 2024

                                Computational Core Logo



                                • 0. Introduction
                                  • 1. Course Introduction
                                  • 2. Navigating Canvas & Codio
                                  • 3. Where to Find Help
                                  • 5. How to Learn Programming
                                  • 6. Fall 2025 Syllabus
                                  • 7. Plagiarism Policy
                                  • 8. Codio Projects
                                • I. OOP
                                  • 1. Hello Real World
                                    • 1. Welcome
                                    • 2. The Growth of Computing
                                    • 3. The Software Crisis
                                    • 4. Language Evolution
                                    • 5. Writing Professional Code
                                    • 6. Hello Real World
                                    • 7. Summary
                                  • 2. Object-Oriented Programming
                                    • 1. Introduction
                                    • 2. Encapsulation
                                    • 3. Packages
                                    • 4. Type Systems
                                    • 5. Structs
                                    • 6. Modules
                                    • 7. State and Behavior
                                    • 8. Classes and Objects
                                    • 9. Access Modifiers
                                    • 10. Objects in Memory
                                    • 11. Message Passing
                                    • 12. Summary
                                  • 3. Documentation
                                    • 1. Introduction
                                    • 2. Documentation Types
                                    • 3. Documentation Formats
                                    • 4. Code Comments
                                    • 5. Javadoc
                                    • 6. Python Docstrings
                                    • 7. Generated Documentation
                                    • 8. Summary
                                  • 4. Testing
                                    • 1. Introduction
                                    • 2. Manual Testing
                                    • 3. Automated Testing
                                    • 4. Writing JUnit Tests
                                    • 5. Java Assertions
                                    • 6. Java Hamcrest
                                    • 7. Writing pytest Tests
                                    • 8. Python Assertions
                                    • 9. Python Hamcrest
                                    • 10. Running Tests
                                    • 11. Testing Strategies
                                    • 12. Summary
                                  • 5. UML
                                    • 1. Introduction
                                    • 2. UML
                                    • 3. Boxes
                                    • 4. Typed Elements
                                    • 5. Classes
                                    • 6. Associations
                                    • 7. Creating UML Diagrams
                                    • 8. UML Example
                                    • 9. Summary
                                  • 6. Inheritance & Polymorphism
                                    • 1. Introduction
                                    • 2. Types
                                    • 3. Interfaces
                                    • 4. Java Interfaces
                                    • 5. Java Inheritance
                                    • 6. Python Interfaces
                                    • 7. Python Inheritance
                                    • 8. Type Checking & Conversion
                                    • 9. Message Dispatching
                                    • 10. Summary
                                  • 7. Debugging & Logging
                                    • 1. Introduction
                                    • 2. Art of Debugging
                                    • 3. Inspecting State
                                    • 4. Inspecting Behavior
                                    • 5. Debuggers
                                    • 6. Logging
                                    • 7. Summary
                                  • 8. Lambda Expressions
                                    • 1. Introduction
                                    • 2. Lambda Calculus
                                    • 3. Functions as Objects
                                    • 4. Java Lambdas
                                    • 5. Python Lambdas
                                    • 6. Best Practices
                                    • 7. Summary
                                  • 9. Design Patterns
                                    • 1. Introduction
                                    • 2. The Gang of Four
                                    • 3. Software Design Patterns
                                    • 4. Builder Pattern
                                    • 5. Factory Method Pattern
                                    • 6. Singleton Pattern
                                    • 7. Iterator Pattern
                                    • 8. Adapter Pattern
                                    • 9. Template Method Pattern
                                    • 10. Summary
                                  • 10. Test Doubles
                                    • 1. Introduction
                                    • 2. Need for Test Doubles
                                    • 3. Arrange, Act, Assert
                                    • 4. Stubs
                                    • 5. Fakes
                                    • 6. Mocks
                                    • 7. Test Doubles in JUnit
                                    • 8. Test Doubles in pytest
                                    • 9. Dependency Injection
                                    • 10. Summary
                                • II. GUI
                                  • 11. GUI Basics
                                    • 1. Introduction
                                    • 2. Screens
                                    • 3. Frameworks
                                    • 4. Designing a GUI
                                    • 5. Containers
                                    • 6. Layout Managers
                                    • 7. Elements
                                    • 8. Accessing GUI in Codio
                                    • 9. Java Swing
                                    • 10. Python tkinter
                                    • 11. Summary
                                  • 12. Parallelism
                                    • 1. Introduction
                                    • 2. Processes
                                    • 3. Threads
                                    • 4. Creating Threads
                                    • 5. Race Conditions
                                    • 6. Thread Synchronization
                                    • 7. Java Threads
                                    • 8. Java Synchronization
                                    • 9. Python Threads
                                    • 10. Python Synchronization
                                    • 11. Summary
                                  • 13. Event-Driven Programming
                                    • 1. Introduction
                                    • 2. GUI Threads
                                    • 3. Binding Events
                                    • 4. Event Handlers
                                    • 5. Event Loop
                                    • 6. Swing Event Dispatch Thread
                                    • 7. tkinter Main Loop
                                    • 8. Summary
                                  • 14. External Libraries
                                    • 1. Introduction
                                    • 2. Software Libraries
                                    • 3. Library Types
                                    • 4. Frameworks
                                    • 5. Repositories
                                    • 6. Licenses
                                    • 7. Don't Reinvent the Wheel
                                    • 8. Java JARs
                                    • 9. Java Libraries
                                    • 10. Python Wheels
                                    • 11. Python Libraries
                                    • 12. Summary
                                  • 15. Creating a Release
                                    • 1. Introduction
                                    • 2. Preparing for Release
                                    • 3. Choosing a License
                                    • 4. Metadata
                                    • 5. GitHub Pages
                                    • 6. Building Java JAR File
                                    • 7. Building Python Wheel
                                    • 8. GitHub Releases
                                    • 9. Publication
                                    • 10. Summary
                                • III. Web
                                  • 16. Data-Driven Websites
                                    • 1. Introduction
                                    • 2. HTML
                                    • 3. CSS
                                    • 4. JavaScript
                                    • 5. HTTP
                                    • 6. Static Web Servers
                                    • 7. Dynamic Web Pages
                                    • 8. Template Rendering
                                    • 9. Web Frameworks
                                    • 10. Request & Response
                                    • 11. Routing
                                    • 12. Template Inheritance
                                    • 13. Summary
                                  • 17. REST and Forms
                                    • 1. Introduction
                                    • 2. HTML Forms
                                    • 3. Form Data
                                    • 4. Spring and Form Data
                                    • 5. Flask and Form Data
                                    • 6. RESTful Routes
                                    • 7. Validation
                                    • 8. Summary
                                  • 18. Web APIs
                                    • 1. Introduction
                                    • 2. Web APIs
                                    • 3. REST
                                    • 4. Documenting Web APIs
                                    • 5. Handling Authentication
                                    • 6. Using a Web API
                                    • 7. Summary
                                  • 19. Serialization
                                    • 1. Introduction
                                    • 2. State Review
                                    • 3. Text Formats
                                    • 4. Binary Formats
                                    • 5. Java Serialization
                                    • 6. Python Serialization
                                    • 7. Items to Exclude
                                    • 8. Databases
                                    • 9. Summary
                                  • 20. Extras
                                    • 1. Introduction
                                    • 2. Generics in Java
                                    • 3. Generics in Python
                                    • 4. Software Development Life Cycles
                                    • 5. Requirements Elicitation
                                    • 6. Security
                                    • 7. Résumés & Certifications
                                    • 8. Integrated Development Environments
                                    • 9. Programming Resources
                                    • 10. Summary
                                • IV. Extras
                                  • 1. Installing Git on Windows
                                  • 2. Installing Python
                                  • 3. Installing Java
                                  • 4. Python IDEs
                                  • 5. Java IDEs
                                • Weekly Updates
                                  • 1. Fall '25 Week 1
                                • Example Projects
                                  • 0. New Project Checklist
                                  • 1. Hello Real World
                                    • 1. Codio and Terminal
                                    • 2. GitHub Classroom Setup
                                    • 3. Clone Starter from GitHub
                                    • 4.J. Java
                                      • 4.J.1. Install Gradle
                                      • 4.J.2. Create New Project
                                      • 4.J.3. Write Hello World
                                      • 4.J.4. Git Commit & Push
                                      • 4.J.5. Unit Tests
                                      • 4.J.6. Code Coverage
                                      • 4.J.7. Documentation
                                      • 4.J.8. Checkstyle
                                      • 4.J.9. Hamcrest
                                    • 4.P. Python
                                      • 4.P.1. Create New Project
                                      • 4.P.2. Write Hello World
                                      • 4.P.3. Git Commit & Push
                                      • 4.P.4. Unit Tests
                                      • 4.P.5. Install Tox
                                      • 4.P.6. Code Coverage
                                      • 4.P.7. Documentation
                                      • 4.P.8. Flake8
                                      • 4.P.9. Type Checking
                                      • 4.P.10. Hamcrest
                                    • 5. Creating GitHub Release
                                    • 6. Assignment Requirements
                                    • 7. Next Steps
                                  • 2. Object-Oriented Programming
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 3. Unit Testing
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 4. Inheritance
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 5. Debugging & Logging
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                    • 2.P.1 Update to Example 5 Python
                                  • 6. Design Patterns
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 7A. Parallel Programming
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 7. Test Doubles
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 7B. Event-Driven Programming
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 8. GUI Basics
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 9. Combos & Libraries
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 10. Releases
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 11. Web Basics
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 12. Forms
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 13. REST
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                  • 14. Form Validation
                                    • 1. Assignment Requirements
                                    • 2.J. Java
                                    • 2.P. Python
                                • Project Milestones
                                  • A. Final Project
                                  • 0. Hello Real World
                                  • 1. Restaurant Classes
                                  • 2. Documentation & Testing
                                  • 3. Inheritance
                                  • 4. Design Patterns
                                  • 5. Test Doubles
                                  • 6. GUI Basics
                                  • 7. Event-Driven Programming
                                  • 8. Orders & Combos
                                  • 9. Checkout
                                  • 10. Website Basics
                                  • 11. Form Data
                                  • 12. RESTful Architecture
                                  • 13. Validation & Serialization
                                  • Previous Semesters
                                    • Spring & Summer 2021
                                      • A. Final Project
                                      • 0. Hello Real World
                                      • 1. Restaurant Classes
                                      • 2. Documentation & Testing
                                      • 3. Inheritance
                                      • 4. GUI Basics
                                      • 5. Event-Driven Programming
                                      • 6. Orders & Combos
                                      • 7. Checkout
                                      • 8. Website Basics
                                      • 9. Form Data
                                      • 10. RESTful Architecture
                                      • 11. Validation & Serialization
                                    • Fall 2021
                                      • A. Final Project
                                      • 0. Hello Real World
                                      • 1. Restaurant Classes
                                      • 2. Documentation & Testing
                                      • 3. Inheritance
                                      • 4. GUI Basics
                                      • 5. Event-Driven Programming
                                      • 6. Orders & Combos
                                      • 7. Checkout
                                      • 8. Website Basics
                                      • 9. Form Data
                                      • 10. RESTful Architecture
                                      • 11. Validation & Serialization
                                    • Fall 2022
                                      • A. Final Project
                                      • 0. Hello Real World
                                      • 1. Restaurant Classes
                                      • 2. Documentation & Testing
                                      • 3. Inheritance
                                      • 4. GUI Basics
                                      • 5. Event-Driven Programming
                                      • 6. Orders & Combos
                                      • 7. Checkout
                                      • 8. Website Basics
                                      • 9. Form Data
                                      • 10. RESTful Architecture
                                      • 11. Validation & Serialization
                                    • Spring 2023
                                      • A. Final Project
                                      • 0. Hello Real World
                                      • 1. Restaurant Classes
                                      • 2. Documentation & Testing
                                      • 3. Inheritance
                                      • 4. Design Patterns
                                      • 5. Test Doubles
                                      • 6. GUI Basics
                                      • 7. Event-Driven Programming
                                      • 8. Orders & Combos
                                      • 9. Checkout
                                      • 10. Website Basics
                                      • 11. Form Data
                                      • 12. RESTful Architecture
                                      • 13. Validation & Serialization
                                    • Fall 2023
                                      • A. Final Project
                                      • 0. Hello Real World
                                      • 1. Restaurant Classes
                                      • 2. Documentation & Testing
                                      • 3. Inheritance
                                      • 4. Design Patterns
                                      • 5. Test Doubles
                                      • 6. GUI Basics
                                      • 7. Event-Driven Programming
                                      • 8. Orders & Combos
                                      • 9. Checkout
                                      • 10. Website Basics
                                      • 11. Form Data
                                      • 12. RESTful Architecture
                                      • 13. Validation & Serialization
                                • Instructor Resources
                                  • 1. Module Outline & Notes
                                  • 2. New Semester
                                  • 3. Errata
                                  • 4. Python 3.9

                                •  

                                Built using Hugo and Hugo Relearn Theme.

                                Creative Commons License
                                This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. See License & Attribution for details.