Mark Austin,
Department of Civil Engineering,
University of Maryland, College Park.
Notes from Class: [ Spring 2023 ]
Meet the Class: [ 2017 ] [ 2018 ] [ 2019 ] [ 2023 ]
Projects: [ 2017 ] [ 2018 ] [ 2019 ] [ 2023 ]


This course is a hands-on introduction to software development for data and information modeling of modern civil infrastructure systems.

Students will learn how to write and compile simple programs in Python and Java (no prior experience required), and then work step-by-step toward the use of object-oriented software architectures, collections, and software design patterns. We will use graph data structures and algorithms to model networked systems found in the built environment.

A wide range of case study applications will be considered, e.g., modeling of road and utility networks, multi-domain semantic modeling and reasoning, project scheduling, and planning of activities in disaster response.

The semester will conclude with completion and presentation of a project.

Click here to see a sample of screenshots from recent class projects.

Note: We welcome students from across the College of Engineering.


The topics will be as follows:

Part 1: Data and Information Management for Modern Civil Systems (2 weeks)

  • Modern Civil Infrastructure Systems
    Topic: Features and required capabilities.
    Topic: Role of sensing, communications, control, and computation.
    Topic: Pathway from sensing to data to information, knowledge and decision making to action.
    Topic: Cyber-physical systems and Digital Twins.
  • Languages for Engineering Software Development
    Topic: Evolution of computer languages over the past 20 years?
    Topic: Features of low- and high-level languages
    Topic: Features of scripting languages versus compiled languages
  • Visual Modeling of Systems with UML/SysML
    Topic: History and Goals of UML/SysML.
    Topic: Modeling abstractions for system structure and system behavior.
  • Real-World Urban Datasets
    Topic: Urban, Government and Geographic Data Portals

Part 2: Introduction to Python and Java (3 weeks)

  • Getting Started with Python
    Topic: Writing and Compiling a Simple Python Program,
    Topic: Basic programming (data types, expressions, control structures, functions),
    Topic: Working with builtin collections (lists, dictionaries, sets).
    Topic: Working with Pandas (series and dataframes).
    Topic: Reading CSV files; two and three-dimensional graphics.
    Topic: Software Productivity Tools: pip, Jupyter Notebook.
  • Getting Started with Java
    Topic: Writing and Compiling a Simple Java Program,
    Topic: Basic programming (data types, expressions, assignments, branching constructs, loops),
    Topic: Public and private methods and data.
    Topic: Single- and multi-dimensional arrays,
    Topic: Reading CSV files; two and three-dimensional graphics.
    Topic: Software Productivity Tools: Ant.
  • Object-Oriented Software Development
    Topic: Classes, objects, association and inheritance relationships.
    Topic: Abstract classes and interfaces.
    Topic: Guidelines for class and package design.

Part 3: Data Structures and Algorithms (2 weeks)

  • Introduction to Data Structures and Algorithms
    Topic: Arrays, arraylists, hash tables, and trees.
    Topic: Modeling Association relationships (e.g., many-to-one, many-to-many),
    Topic: Working with the Java Collections Framework.
    Topic: Working with the Python Collections Module.
  • Graph Data Structures and Algorithms
    Topic: Graphs and Graph Algorithms.
    Topic: Working with JGraphT (Java) and NetworkX (Python) .
    Topic: Applications of graphs to infrastructure/network modeling.

Part 4: Software Design Patterns (2 weeks)

  • Introduction
    Topic: Definition and importance
    Topic: Design patterns in architecture and city planning.
  • Structural Design Patterns
    Topic: Builder, composite hierarchy, adapter and bridge design patterns.
  • Behavioral Design Patterns
    Topic: Observer, mediator and visitor design patterns.
  • System Design Patterns
    Topic: Model-view-controller and router design patterns.

Part 5: Spatial Modeling of Urban Systems (2 weeks)

  • Spatial Abstractions and Reasoning
    Topic: Points, Lines, Polygons, MultiPoints, MultiLines, ...
    Topic: Region Connected Calculus (RCC).
    Topic: Modeling planar geometric objects with Shapely (Python).
    Topic: Spatial modeling with JTS (Java Topology Suite).
  • XML Data Models
    Topic: Traditional Approaches to Working with XML (SAX and DOM)
    Topic: Java Binding for XML (JAXB)
    Topic: Java to XML conversion; XML to Java conversion.
  • OpenStreetMap (OSM) Data Models
    Topic: The Open Street Map Markup Language (OSM).
    Topic: Reading and Processing OSM Data.

Part 6: Additional Topics (Class Interest and Time Permitting) (1 week)

  • Graphical User Interface (GUI) Development with JavaFX
    Topic: Organization of JavaFX components.
    Topic: Layout managers, event listeners.
    Topic: Working with FXML.
  • GeoSpatial Modeling and Visualization
    Topic: Introduction to GeoPandas.
    Topic: Visualization of networks and graphs.

Students will complete individual homework assignments, and work in small teams on a software development project.


Here's what synchronous online means:

  • For each lecture I will post the "lecture content" (pdf) to the notes from class page.

  • I will also post handouts and links to interesting web sites on notes from class .

  • We will meet during class times over zoom.
    I will go over the material, demonstrate various ideas in software, and answer your questions.

  • E-mail submission of homework and project work.
    Please see the detailed instructions (for naming of files) below.

Synchronous Class Sessions and Office Hours

  • Mark Austin . Synchronous class sessions and office hours will be Tuesday and Thursday, 5-6.15 pm.
    Join Zoom Meeting: https://umd.zoom.us/j/6517468335

    This semester I will be holding in-person office hours (at the university), Monday and Wednesday 11 am -- 12 pm.
    If you are having a problem with your computer, meeting in person might be the best option. Even if you just want to drop-in to catch up, that'll be fine too!

Submission of Homework and Project Work

  • Homework will be posted on the notes from class web page.
    Please submit your homework as a zip file and send either as an attachment to an e-mail or via Dropbox.
    Also, please indicate in your e-mail subject heading the class and purpose of the e-mail, e.g,,
        ENCE688R: Homework 2 ...

Submission of Midterm and Final Exams

  • I will post exam on the "notes from class" web page at 5pm on the day of the exam,
    and log into Zoom soon thereafter (just in case you have questions).

  • You will have 24 hrs to work on your solution, scan and convert your solution into a pdf file having the name, e.g.,

    For example, the file name: ENCE688R-Midterm1-Austin-Mark.pdf would indicate midterm 1 exam paper from Mark Austin.

  • Good luck!

Midterm exam papers will be returned after they have been graded.

Class Text and Resources

  • Text not required, but there will be lots of class handouts distributed via notes from class web page.
  • Java and Python software will be distributed via the notes from class web page and Dropbox.

Course Assessment and Exam Schedule

The course will be assessment will be as follows:

  • Homework (20%).
  • One midterm exam (25%).
    The exam will be open book and open notes.
  • Final exam (25%): December XX.
    The exam will be open book and open notes and will
    be similar in style to the midterm exam.
    Study hints have been posted to the notes-from-class web page.
  • End-of-semester project/report involving the use of graphs/networks (30%).

Note. Students may drop the midterm exam if they do better on the final exam (i.e., it can count for up to 50% of the final grade).


  • Accommodation for students with disabilities will be made.
  • At the end of the semester, please participate in the evaluation of courses through CourseEvalUM.
    Your feedback is confidential and an important means of improving the course in future semesters.

Download Python and Java

  • Download Python 3.X . It seems that Apple ships its Macs with Python 2.X pre-installed.
    But for the purposes of this class I am going to assume you have Python 3.7 (or Python 3.8) installed.
    This detail matters because the language is not backwards compatible (Strike 1 against Python).
  • Download Java . I have Java 1.11 on my laptop, but you are
    certainly welcome to download a more recent version.
  • Download Apache Ant . Apache Ant is a Java Library that
    manages the compilation of Java programs and execution of programs and test cases. Extremely useful.
  • Click here to download the Eclipse IDE.

  • NEW: Download Microsoft Visual Studio .

  • If your computer is a Mac think about downloading Homebrew and then using brew to
    automatically download and install the Ant packages on your machine.

    Note (Oct, 2020). I just installed homebrew on my iMac (home) running Catalina (10.15) and, sadly, Apple has not
    made this process easy. Here's the bottom line to get things working:

    Homebrew uses something called the "command line tools", which is an addition to Xcode.
    So before you can install Homebrew, you need to download and install the command line tools.
    I downloaded the dmg file for the command line tools from the Apple developers web site --
    just create an account, it's free. Run the installation program and the tools will be put
    in /Library/Developers/CommandLineTools/

    Then, to install Homebrew, cut-and-paste the command listed on the Homebrew page into a terminal window
    running the bash shell. The installation only takes are few minutes and you are good to go.
    For example, to install ant, simply type: brew install ant at the prompt in a terminal window.

Python and Java Programming Resources

Real-World Datasets

Working with Real-World Data

Digital Twins

Last Modified: January 6, 2023.
Copyright © 2012-2023, Department of Civil and Environmental Engineering, University of Maryland