Lecture 01 Intro
Joseph Haugh
University of New Mexico
CS 351: Design of Large Programs
- Joseph Haugh
- University of New Mexico
- Spring 2026
Technology
- Programming language: Java
- We will be using Azul JDK 25 (see this page for more details)
- GUI library: JavaFX
- IDE: IntelliJ
- Version control: Git
- Project hosting: GitHub Classroom
Project Submission
- Projects will be submitted through GitHub Classroom
- Follow the submission guidelines and coding standards posted on course website.
- Don’t wait until the last minute to submit
Prerequisite Skills
- Functions and Procedures
- Recursion
- Classes and Objects
Software Development Lifecycle
- Requirements Engineering: CS460
- Software Architecture Design: CS351, CS460
- Implementation and Testing: CS251, CS351, CS460
Course Outline
- Object Oriented Design
- Object Oriented Programming
- Sequential Programming
- Abstract data types
- Classes, inheritance, interfaces, specification, notation
- Complex data structures
- Design patterns
- Concurrent Programming
- Concurrency
- Threads and synchronization
- Distributed Computing
- Client-server model
- Socket programming
Object Oriented Design
- A design paradigm that emphasizes:
- Data and device encapsulation
- Information hiding
- Top-down hierarchical structuring
- The prototypical structure entails:
- One main procedure
- Several subordinate objects
- Highly complex system designs employ the same basic principles
- Object-oriented design can be employed even when the underlying programming language is not object-oriented
Object Oriented Design Pattern
![design diagram]()
- We will be using drawio to make these diagrams
- You can download it locally or use the online version
- A template for most of the components and connectors we will be using can be found here
- Going forward make a copy of that diagram whenever you want to start a new one
Object Oriented Programming
- The concepts of object and class are explicit programming constructs in the language.
- Objects: instantiated from class definitions
- Classes: have associated code that is executed on behalf of instantiated objects
- Classes are defined in terms of other classes by using inheritance
- Object-oriented programming languages simplify the implementation of object-oriented designs.
- A given design may have many different and distinct program representations.
- Use of object-oriented programming languages does not guarantee clean design and proper encapsulation.