Course Overview
This course develops advanced programming and computational skills necessary for solving engineering problems. Students gain practical training through bi-weekly assignments and a final team project.
Prerequisites
Required Background:
- 24-780 Engineering Computation or equivalent
- Experience with C++ programming
- Experience with OpenGL graphics programming
Key Topics
1. Data Structures & Algorithms
Focus on efficient data structures and algorithms for real-world engineering datasets:
- Trees: Binary search trees, balanced trees, spatial trees
- Hash Tables: Efficient lookup and storage
- Searching Algorithms: Advanced search techniques
- Priority Queues: Heap-based priority management
2. Simulation & Visualization
Advanced techniques for engineering simulation and graphics:
- Numerical ODEs: Solving ordinary differential equations
- Numerical PDEs: Partial differential equation methods
- Viewing Control: Camera systems and navigation
- Programmable Shaders: GPU programming for visualization
3. Development Tools
Modern software development practices:
- Version Control: Git and Subversion for code management
- Scripting: Automation of development tasks
- Build Systems: CMake for cross-platform builds
Learning Format
The course emphasizes hands-on experience through:
- Bi-weekly Assignments: Regular programming projects
- Team Project: Collaborative capstone project
- Practical Implementation: Real-world engineering applications
Course Location
Campus: Carnegie Mellon University, Pittsburgh Credits: 12 units Semester: Spring
Course Philosophy
The course prepares students to apply computational methods to engineering challenges, with emphasis on both algorithmic efficiency and practical software engineering skills. Students learn to build robust, maintainable computational tools for engineering applications.
Application Areas
The skills developed in this course are applicable to:
- Computational fluid dynamics
- Structural analysis
- Multi-physics simulation
- Scientific visualization
- Engineering optimization