↑ EGN3214

Course & Module Outcomes

Course Outcomes

By the end of this course, students will be able to:

Outcomes Alignment Map

Module / OutcomeCO1CO2CO3
1 - Python Environment Setup and Language Fundamentals
Select Appropriate Python✓
Configure Isolated Virtual✓
Construct Valid Python✓
Differentiate Among Python's✓
Apply Explicit Type✓
2 - Control Flow and Python Data Structures
Construct Conditional Statements✓
Implement Loops While✓
Manipulate Python Lists✓
Differentiate Between Lists✓
Select Appropriate Python✓
3 - Functions, Comprehensions, and Functional Patterns
Construct Python Functions✓
Trace Python's Legb✓
Implement Recursive Function✓
Produce List Dictionary✓
Evaluate Apply Lambda✓
4 - Modules, File I/O, and Error Handling
Construct Custom Python✓
Apply With-statement Context✓
Serialize Deserialize Structured✓
Implement Try-except Blocks✓
Select Appropriate Standard✓
5 - NumPy for Engineering Numerical Computation
Construct Numpy Arrays✓
Apply Vectorized Element-wise✓
Select Subsets Array✓
Solve System Linear✓
Calculate Descriptive Statistics✓
6 - Data Visualization with Matplotlib and Intro to Pandas
Construct Line Plots✓
Compose Multi-panel Publication-quality✓
Load Csv Dataset✓
Compute Descriptive Statistics✓
Evaluate Distribution Relationships✓
7 - Object-Oriented Programming and AI-Assisted Coding Workflow
Construct Python Classes✓
Implement Class Hierarchies✓
Formulate Effective Prompts✓
Evaluate Ai-generated Engineering✓
Apply Systematic Debugging✓
Numerical Methods with SciPy and Curve Fitting
Select Appropriate Root-finding✓
Apply Scipy.integrate Functions✓
Fit Both Polynomial✓
Construct Residual Plots✓
Design End-to-end Numerical✓
Engineering Data Analysis and Simulation
Construct End-to-end Engineering✓
Produce Properly Formatted✓
Implement Numerical Time-stepping✓
Evaluate Accuracy Numerical✓
Integrate Cleaned Measured✓
Machine Learning, Automation, Version Control, and Responsible AI
Distinguish Between Regression✓
Construct Scikit-learn Pipeline✓
Design Parameter Sweep✓
Apply Core Git✓
Evaluate Ai-generated Code✓

Module Topics & Outcomes

Module 1: 1 - Python Environment Setup and Language Fundamentals

Topics

Python Programming Environments

Covers the tools and interfaces used to write and run Python code, including IDEs and Jupyter notebooks. Learners will understand how to choose an appropriate environment for different tasks.

Package Management in Python

Explores how Python packages extend the language's capabilities and how to install, manage, and organize them using tools like pip and virtual environments.

Interactive vs. Script Execution

Distinguishes between running Python code interactively in a REPL or notebook and executing standalone Python script files. Learners will understand when to use each approach.

Variables and Assignment

Introduces how Python uses variables to store and reference data, covering naming conventions, assignment syntax, and how Python manages variable references in memory.

Core Data Types

Covers Python's fundamental built-in data types including integers, floats, strings, and booleans, explaining their characteristics and appropriate use cases.

Operators in Python

Introduces the main categories of Python operators — arithmetic, comparison, logical, and assignment — explaining their syntax, behavior, and precedence rules.

Type Conversion

Explains how Python handles conversion between data types, distinguishing between implicit coercion performed automatically by Python and explicit conversion performed by the programmer.

Learning Outcomes

MO1
Select an appropriate Python execution environment — such as an IDE, Jupyter Notebook, or REPL — for a given programming task
Level: EvaluateType: CognitiveCourse mapping: CO3
MO2
Configure an isolated virtual environment and install required packages using pip
Level: ApplyType: BehavioralCourse mapping: CO3
MO3
Construct valid Python variable assignments that conform to PEP 8 naming conventions and utilize multiple assignment and unpacking syntax
Level: ApplyType: CognitiveCourse mapping: CO1
MO4
Differentiate among Python's core built-in data types — int, float, str, bool, and None — by using the type() function to inspect variable types in a running program
Level: AnalyzeType: CognitiveCourse mapping: CO1
MO5
Apply explicit type conversion functions to transform values between compatible data types while identifying conversions that raise exceptions
Level: ApplyType: CognitiveCourse mapping: CO1

Module 2: 2 - Control Flow and Python Data Structures

Topics

Conditional Statements

Conditional statements allow a program to make decisions by executing different code blocks based on whether a condition evaluates to true or false. This topic covers if, elif, and else constructs in Python.

for Loops and the range() Function

The for loop iterates over a sequence of items, making it ideal for processing collections of data. The range() function generates numeric sequences commonly used to control loop iterations.

while Loops

A while loop repeats a block of code for as long as a specified condition remains True, making it suitable for situations where the number of iterations is not known in advance.

Loop Control: break and continue

The break and continue statements provide fine-grained control over loop execution, allowing early termination or skipping specific iterations without exiting the loop entirely.

Lists

Lists are ordered, mutable sequences that can hold items of any type, making them one of the most versatile and widely used data structures in Python.

Tuples

Tuples are ordered, immutable sequences that are ideal for storing fixed collections of data that should not be changed after creation.

Dictionaries

Dictionaries store data as key-value pairs, enabling fast lookups by key rather than by position, and are ideal for representing structured, labeled data.

Sets and Choosing the Right Data Structure

Sets store unique, unordered elements and support efficient membership testing and set operations. This topic also provides guidance on selecting the appropriate data structure for engineering problems.

Learning Outcomes

MO1
Construct conditional statements using if, elif, and else clauses — combined with comparison and logical operators — to control program execution flow
Level: ApplyType: CognitiveCourse mapping: CO3
MO2
Implement for loops, while loops, and loop control statements (break and continue) to iterate over sequences and numeric ranges in engineering contexts
Level: ApplyType: CognitiveCourse mapping: CO3
MO3
Manipulate Python lists using indexing, slicing, list comprehensions, and built-in methods to process ordered collections of data
Level: ApplyType: CognitiveCourse mapping: CO1
MO4
Differentiate between lists, tuples, dictionaries, and sets based on their properties of mutability, ordering, and access method
Level: AnalyzeType: CognitiveCourse mapping: CO1
MO5
Select the appropriate Python data structure for a given engineering problem by evaluating the correctness, performance, and readability trade-offs among lists, tuples, dictionaries, and sets
Level: EvaluateType: CognitiveCourse mapping: CO1

Module 3: 3 - Functions, Comprehensions, and Functional Patterns

Topics

Defining Functions

Introduces the syntax and mechanics of creating reusable functions in Python. Covers the def keyword, naming conventions, and the role of the return statement.

Parameters and Arguments

Explores the different ways values can be passed into functions, including positional, keyword, and default parameters. Establishes clear terminology between parameters and arguments.

Variable-Length Arguments: *args and **kwargs

Covers the special *args and **kwargs syntax that allows functions to accept an arbitrary number of positional or keyword arguments. Explains how these mechanisms support flexible and reusable API design.

Scope and Variable Visibility

Explains how Python resolves variable names using the LEGB rule and how the global and nonlocal keywords allow functions to modify variables in enclosing scopes.

Recursion

Introduces recursion as a technique where a function calls itself to solve a problem by reducing it to smaller instances. Covers base cases, recursive cases, and practical considerations like stack depth.

Comprehensions

Teaches the concise comprehension syntax for building lists, dictionaries, and sets from iterables. Covers optional filtering conditions and nested comprehensions.

Lambda Functions and Functional Patterns

Introduces anonymous lambda functions and the map and filter built-ins as tools for applying functional programming patterns in Python. Explains when to use these tools versus comprehensions or named functions.

Learning Outcomes

MO1
Construct Python functions using the def keyword, appropriate parameter types (positional, keyword, default, *args, and **kwargs), and explicit return statements to produce reusable, documented code
Level: ApplyType: CognitiveCourse mapping: CO2
MO2
Trace Python's LEGB scope rule to predict which value a variable name resolves to within nested and global function contexts
Level: AnalyzeType: CognitiveCourse mapping: CO2
MO3
Implement a recursive function by identifying the base case and recursive case for a given problem
Level: ApplyType: CognitiveCourse mapping: CO2
MO4
Produce list, dictionary, and set comprehensions — including filter clauses and nested iteration — to transform data from existing iterables
Level: ApplyType: CognitiveCourse mapping: CO1
MO5
Evaluate when to apply lambda functions, map(), or filter() versus comprehensions for a given data-transformation task based on readability and functional requirements
Level: EvaluateType: CognitiveCourse mapping: CO3

Module 4: 4 - Modules, File I/O, and Error Handling

Topics

Introduction to Python Modules

Explains what modules are, why they are used, and how Python locates and loads them at runtime.

Writing and Using Custom Modules

Covers how to design, write, and import your own Python modules to share reusable engineering functions across projects.

Using Standard Library Modules

Introduces key modules included with Python that are immediately useful for engineering scripting tasks without additional installation.

File I/O with the with Statement

Explains how to open, read, and write text files safely using Python's with-statement context manager to guarantee proper resource cleanup.

Reading and Writing CSV Files

Covers using Python's built-in csv module to read tabular data from CSV files and write structured results, a common task in engineering data workflows.

Working with JSON

Introduces JSON as a human-readable data interchange format and demonstrates how Python's json module serializes and deserializes data for configuration files and APIs.

Error Handling with try-except

Explains Python's exception handling model and demonstrates how to use try-except blocks to build resilient engineering scripts that recover gracefully from runtime errors.

Learning Outcomes

MO1
Construct a custom Python module containing reusable engineering functions, organized with a __name__ == '__main__' guard and module-level documentation
Level: CreateType: CognitiveCourse mapping: CO2
MO2
Apply the with-statement context manager to read from and write to text and CSV files using Python's built-in open() function and csv module
Level: ApplyType: CognitiveCourse mapping: CO3
MO3
Serialize and deserialize structured engineering data between Python objects and JSON format using the json module's load, loads, dump, and dumps functions
Level: ApplyType: CognitiveCourse mapping: CO1
MO4
Implement try-except blocks with else, finally, and raise clauses to handle runtime exceptions in scripts that perform file I/O and numeric operations
Level: ApplyType: CognitiveCourse mapping: CO3
MO5
Select appropriate standard library modules — including math, os, datetime, and pathlib — to accomplish specified engineering scripting tasks
Level: AnalyzeType: CognitiveCourse mapping: CO3

Module 5: 5 - NumPy for Engineering Numerical Computation

Topics

Numpy Functions

A summary of Numpy functions

Introduction to NumPy and the ndarray

Covers what NumPy is, why it is the cornerstone of numerical engineering computation in Python, and how the ndarray differs fundamentally from a Python list.

Creating NumPy Arrays

Explores the full range of array construction methods, from converting Python sequences to using specialized initialization functions that generate arrays of specific values or ranges.

Element-Wise Operations and Universal Functions

Describes how NumPy performs arithmetic and mathematical operations element-by-element using ufuncs, enabling vectorized computation without explicit Python loops.

Broadcasting

Explains NumPy's broadcasting mechanism that allows arithmetic operations between arrays of different but compatible shapes without copying data.

Indexing, Slicing, and Fancy Indexing

Covers all methods for accessing and selecting subsets of array elements, from basic integer indexing and slices to advanced Boolean and integer-array indexing.

Reshaping, Transposing, and Array Manipulation

Explains how to change the shape and layout of arrays without altering their data, including reshape, transpose, flatten, and stacking operations fundamental to preparing data for engineering algorithms.

Linear Algebra with NumPy

Covers NumPy's linear algebra capabilities, including matrix multiplication, decompositions, solving linear systems, and computing norms and determinants as needed for engineering analysis.

Statistical and Mathematical Functions

Introduces NumPy's built-in statistical descriptors and mathematical functions that enable rapid characterization of engineering data and evaluation of mathematical expressions over arrays.

Learning Outcomes

MO1
Construct NumPy arrays using creation functions such as np.array(), np.arange(), np.linspace(), and constant-value initializers appropriate to a given engineering computation context
Level: ApplyType: CognitiveCourse mapping: CO1
MO2
Apply vectorized element-wise operations and broadcasting rules to perform arithmetic across arrays of compatible but different shapes without explicit Python loops
Level: ApplyType: CognitiveCourse mapping: CO3
MO3
Select subsets of array data using integer indexing, slicing, Boolean masking, and fancy indexing to extract or filter engineering datasets
Level: ApplyType: CognitiveCourse mapping: CO1
MO4
Solve a system of linear equations and compute eigenvalues of a square matrix using NumPy's numpy.linalg functions
Level: ApplyType: CognitiveCourse mapping: CO3
MO5
Calculate descriptive statistics and evaluate trigonometric or polynomial functions over arrays to characterize engineering data
Level: ApplyType: CognitiveCourse mapping: CO3

Module 6: 6 - Data Visualization with Matplotlib and Intro to Pandas

Topics

Introduction to Matplotlib and the pyplot Interface

Introduces the matplotlib library and its pyplot module, explaining how the interface manages the figure and axes objects that underlie every plot.

Line Plots and Scatter Plots

Covers the creation and customization of line plots and scatter plots, the two most common chart types for visualizing continuous and relational engineering data.

Bar Charts and Histograms

Explains how to create bar charts for categorical comparisons and histograms for examining the distribution of numerical data in engineering contexts.

Subplots and Figure Layout

Demonstrates how to create multi-panel figures using subplots, enabling side-by-side comparison of different plots within a single publication-ready figure.

Publication-Quality Figure Styling

Covers techniques for elevating plot aesthetics to meet publication and report standards, including style sheets, custom colors, annotations, and saving high-resolution outputs.

Introduction to Pandas: Series and DataFrames

Introduces the pandas library and its two primary data structures — Series and DataFrame — which form the foundation for data manipulation and analysis in Python.

Reading, Filtering, and Sorting Data with Pandas

Demonstrates how to load datasets from files and then select, filter, and sort rows and columns to extract meaningful subsets for engineering analysis.

Descriptive Statistics with Pandas

Covers pandas methods for computing summary statistics, aggregating grouped data, and identifying missing values in engineering datasets.

Learning Outcomes

MO1
Construct line plots, scatter plots, bar charts, and histograms using Matplotlib's pyplot interface with appropriate axis labels, titles, and customization parameters
Level: ApplyType: CognitiveCourse mapping: CO3
MO2
Compose multi-panel publication-quality figures using plt.subplots() and GridSpec with correctly adjusted layout, styling, and high-resolution export settings
Level: CreateType: CognitiveCourse mapping: CO3
MO3
Load a CSV dataset into a Pandas DataFrame and apply column selection, Boolean row filtering, and sorting operations to extract targeted subsets of engineering data
Level: ApplyType: CognitiveCourse mapping: CO1
MO4
Compute descriptive statistics and grouped aggregations on a Pandas DataFrame using describe() and groupby() to summarize engineering dataset characteristics
Level: AnalyzeType: CognitiveCourse mapping: CO3
MO5
Evaluate the distribution and relationships within an engineering dataset by interpreting histograms, correlation values, and grouped summary statistics generated with Matplotlib and Pandas
Level: EvaluateType: CognitiveCourse mapping: CO3

Module 7: 7 - Object-Oriented Programming and AI-Assisted Coding Workflow

Topics

Foundations of Object-Oriented Programming

Introduces the fundamental concepts of OOP, explaining why it is a powerful paradigm for structuring engineering software. Covers the building blocks of classes, objects, attributes, and methods.

Modeling Engineering Objects with Classes

Demonstrates how OOP concepts are applied to represent real-world engineering entities such as structural beams and sensors as Python classes. Emphasizes practical class design for engineering problem-solving.

Inheritance and Class Hierarchies

Explains how inheritance allows new classes to build upon and extend existing ones, reducing duplication and reflecting natural hierarchies in engineering domains. Covers single inheritance, method overriding, and the use of super().

Introduction to AI-Assisted Coding Tools

Introduces GitHub Copilot and ChatGPT as AI coding assistants and explains how they integrate into the engineering programming workflow. Establishes the capabilities and limitations of each tool.

AI-Assisted Code Generation Workflow

Establishes a structured workflow for using AI tools to generate, refine, and integrate code for engineering programming tasks. Focuses on effective prompting strategies and iterative development practices.

AI-Assisted Debugging

Covers how to use AI tools to interpret error messages, identify bugs, and reason through incorrect program behavior. Establishes a systematic debugging approach that combines AI assistance with engineer-led analysis.

Responsible Use and Verification of AI-Generated Code

Establishes the ethical responsibilities and practical verification practices engineers must apply when using AI-generated code. Emphasizes that engineering judgment and accountability cannot be delegated to AI tools.

Learning Outcomes

MO1
Construct Python classes that model engineering objects — such as structural beams or sensors — by defining attributes, methods, and a constructor using the __init__ method
Level: ApplyType: CognitiveCourse mapping: CO1
MO2
Implement class hierarchies using inheritance, method overriding, and super() to represent 'is-a' relationships among engineering object types
Level: ApplyType: CognitiveCourse mapping: CO1
MO3
Formulate effective prompts for AI coding assistants to generate class scaffolding and test cases for engineering programming tasks
Level: ApplyType: BehavioralCourse mapping: CO2
MO4
Evaluate AI-generated engineering code by comparing program outputs against hand calculations and applying structured code review to identify logical errors or invalid assumptions
Level: EvaluateType: CognitiveCourse mapping: CO3
MO5
Apply a systematic debugging strategy — including interpreting Python tracebacks and using AI tools to explain common OOP errors — to diagnose and correct faults in class-based engineering programs
Level: ApplyType: BehavioralCourse mapping: CO3

Module 8: 8 - Numerical Methods with SciPy and Curve Fitting

Topics

Introduction to SciPy for Numerical Computing

Introduces the SciPy library, its ecosystem, and how it extends NumPy to support numerical methods used in engineering and science.

Root Finding with scipy.optimize

Covers scalar and multivariate root-finding methods available in scipy.optimize, including bracket-based and derivative-based approaches.

Numerical Integration with scipy.integrate

Covers numerical quadrature for definite integrals and the integration of systems of ordinary differential equations using scipy.integrate.

Linear Curve Fitting with numpy.polyfit

Explains polynomial regression using numpy.polyfit, including model selection, coefficient interpretation, and generating fitted curves for visualization.

Nonlinear Curve Fitting with scipy.optimize.curve_fit

Covers fitting arbitrary nonlinear models to data using scipy.optimize.curve_fit, including defining model functions, interpreting fit parameters, and assessing uncertainty.

Residuals Analysis

Explains how to compute, visualize, and interpret residuals to evaluate curve-fit quality and identify model inadequacy on engineering datasets.

Applying Numerical Methods to Engineering Datasets

Brings together root finding, integration, ODE solving, and curve fitting in end-to-end workflows applied to realistic engineering problems.

Learning Outcomes

MO1
Select an appropriate root-finding method from scipy.optimize (such as brentq, bisect, or fsolve) based on the continuity of the function, availability of derivatives, and the existence of a bracketing interval
Level: EvaluateType: CognitiveCourse mapping: CO3
MO2
Apply scipy.integrate functions (quad, simpson, trapezoid, or solve_ivp) to compute definite integrals and solve initial value ODE problems from engineering datasets
Level: ApplyType: CognitiveCourse mapping: CO3
MO3
Fit both polynomial and nonlinear models to engineering data using numpy.polyfit and scipy.optimize.curve_fit, including defining model functions, supplying initial parameter guesses, and extracting fitted coefficients
Level: ApplyType: BehavioralCourse mapping: CO2
MO4
Construct residual plots and calculate quantitative fit metrics (R² and RMSE) to diagnose model adequacy and identify overfitting in curve-fitting results
Level: AnalyzeType: CognitiveCourse mapping: CO3
MO5
Design an end-to-end numerical workflow that integrates data preprocessing, method selection, parameter estimation, and clearly labeled result visualization to address a realistic engineering problem
Level: CreateType: BehavioralCourse mapping: CO3

Module 9: 9 - Engineering Data Analysis and Simulation

Topics

Introduction to Engineering Data Workflows

Establishes the end-to-end pipeline from raw data acquisition to actionable insight. Introduces the key Python libraries used throughout the module.

Loading and Inspecting Engineering Data

Covers the practical techniques for importing CSV and time-series data files into Python and performing initial inspection to understand data structure and quality.

Data Cleaning and Preprocessing

Addresses the identification and correction of common data quality issues including missing values, outliers, incorrect types, and inconsistent formatting found in raw engineering datasets.

Visualizing Engineering Data with matplotlib

Teaches the construction of clear, informative plots for communicating engineering data patterns, trends, distributions, and relationships using matplotlib and pandas plotting utilities.

Time-Stepping Simulation Fundamentals

Introduces the principles of numerical time-stepping methods used to simulate dynamic engineering systems governed by ordinary differential equations, with emphasis on implementation in Python.

Simulating Mechanical Systems

Applies time-stepping methods to model fundamental mechanical systems including spring-mass-damper oscillators, analyzing dynamic behavior and comparing numerical results to analytical solutions.

Simulating Electrical Systems

Applies time-stepping simulation to model RC and RLC electrical circuits, computing voltage and current transient responses and validating results against analytical solutions.

Simulating Thermal Systems

Applies first- and second-order ODE-based simulation to model heat transfer in lumped-parameter thermal systems, including Newton's law of cooling and multi-node conduction networks.

Learning Outcomes

MO1
Construct an end-to-end engineering data pipeline in Python using pandas and NumPy that loads, cleans, and preprocesses raw CSV or time-series datasets for analysis
Level: ApplyType: BehavioralCourse mapping: CO1
MO2
Produce properly formatted and annotated matplotlib figures that communicate time-series trends, statistical distributions, and variable correlations from engineering datasets
Level: ApplyType: BehavioralCourse mapping: CO3
MO3
Implement a numerical time-stepping simulation in Python using Euler's method or RK4 to solve ordinary differential equations governing mechanical, electrical, or thermal engineering systems
Level: ApplyType: BehavioralCourse mapping: CO2
MO4
Evaluate the accuracy of a numerical simulation by comparing time-stepping results against analytical solutions and identifying the effect of step size on simulation error
Level: EvaluateType: CognitiveCourse mapping: CO3
MO5
Integrate cleaned measured data with simulation outputs to validate a dynamic system model by overlaying experimental and simulated responses on a single annotated plot
Level: AnalyzeType: CognitiveCourse mapping: CO3

Module 10: 10 - Machine Learning, Automation, Version Control, and Responsible AI

Topics

Foundations of Supervised Machine Learning

Introduces the core concepts of supervised learning, distinguishing between regression and classification tasks and explaining how labeled training data drives model development.

Machine Learning with scikit-learn

Covers the practical use of the scikit-learn library to build, train, and evaluate regression and classification models in engineering contexts.

Engineering Automation and Parameter Sweep Pipelines

Introduces strategies for automating repetitive engineering computations and systematically exploring parameter spaces using scripted pipelines.

Git and GitHub Version Control

Establishes foundational and collaborative version control practices using Git locally and GitHub as a remote repository platform for engineering code projects.

Responsible AI Integration in Engineering Practice

Consolidates the ethical, professional, and technical obligations engineers must uphold when using AI tools, including verification of AI-generated code and accountability for outcomes.

Learning Outcomes

MO1
Distinguish between regression and classification tasks by identifying the appropriate supervised learning approach for a given engineering problem based on the nature of the target variable
Level: AnalyzeType: CognitiveCourse mapping: CO3
MO2
Construct a scikit-learn pipeline that chains preprocessing steps with a regression or classification estimator to train and evaluate a model on engineering data
Level: CreateType: BehavioralCourse mapping: CO2
MO3
Design a parameter sweep automation script that systematically varies input parameters, executes the corresponding computations, and stores the resulting outputs for analysis
Level: CreateType: BehavioralCourse mapping: CO3
MO4
Apply core Git commands—including add, commit, branch, merge, push, and pull—to manage version history and collaborate on an engineering code repository hosted on GitHub
Level: ApplyType: BehavioralCourse mapping: CO3
MO5
Evaluate AI-generated code for correctness, hallucinations, and engineering validity before incorporating it into a computational workflow, citing the professional accountability obligations that require such verification
Level: EvaluateType: CognitiveCourse mapping: CO2