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


This course is a hands-on introduction to tools and techniques for data and information modeling of civil 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 and assess infrastructure network systems. Case study applications will include civil infrastructure and urban networks, graphs for multi-domain semantic modeling and reasoning, project scheduling and planning. 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.

Part 2: Getting Started with Python and Java (2 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, tuples).
    Topic: Reading CSV files; two and three-dimensional graphics.
    Topic: Python Productivity Tools: pip, Jupyter Notebook, Anaconda.
  • 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 modeling.

Part 4: Modeling Real-World Urban Data (2 weeks)

  • Real-World Urban Datasets
    Topic: Urban, Government and Geographic Data Portals
    Topic: Data analysis with Pandas
  • 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 5: 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 6: Additional Topics (Class Interest and Time Permitting) (1 week)

  • Spatial Modeling and Reasoning
    Topic: Two-dimensional spatial modeling with JTS (Java Topology Suite).
    Topic: Modeling planar geometric objects with Shapely (Python).
  • Graphical User Interface (GUI) Development with JavaFX
    Topic: Organization of JavaFX components.
    Topic: Layout managers, event listeners.
    Topic: Working with FXML.
  • Case Studies
    Topic: Visualization of networks and graphs.

Students will complete individual homework assignments, and work in small teams on a Civil Systems 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 Monday and Wednesday at 5-6 pm.
    Join Zoom Meeting: https://umd.zoom.us/j/6517468335

    Also, this semester I will be holding in-person office hours (at the university), Monday and Wednesday 10-11 am.
    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 ...

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.


In class, Java code will be distributed for:

  • Working with Java Collections and Software Design Patterns,
  • Working with Graph and Networks,
  • Working with Semantic Web (i.e., rule-basd reasoning with ontologies and rdf graphs),
  • Working with two-dimensional GIS (i.e., Java Topology Suite),
  • Working with JavaFX/FXML.


Last Modified: August 15, 2022.
Copyright © 2012-2022, Department of Civil and Environmental Engineering, University of Maryland