GOALS
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.
COURSE CONTENTS - SPRING SEMESTER 2023
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.
|