Lecture 01 Intro

Joseph Haugh

University of New Mexico

CS 351: Design of Large Programs

  • Joseph Haugh
  • University of New Mexico
  • Spring 2026

Contact Info

  • Instructor: Joseph Haugh
  • Email: jhaugh@cs.unm.edu

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

  • 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.