Course Syllabus: 24-780 - Engineering Computation
Course Syllabus: 24-780 - Engineering Computation
Fall 2019
Mon/Wed 4:30-6:20pm
Course Syllabus
1. Objectives
The practice of engineering in the 21st century relies heavily on the use of computing software. From
preliminary design using “back-of-the-envelope” calculations, through modeling, analysis and prototyping,
into the production of design documentation, all stages of the engineer’s work is supported by software.
Unfortunately, many engineers have only a marginal acquaintance with the programming required to create
the software packages they depend on to solve the technological challenges they must overcome. This
course seeks to provide engineers with the knowledge of how software is developed and with the skills to
develop software solutions that can be brought to bear on the unique problems they will encounter.
The skill of computer programming is part knowledge, part ingenuity, part sweat, and part art. With your
technical background, you are perfectly positioned to be a good programmer if you rely on your problem-
solving ability and judiciously apply your organizational skills. Your experience in design will also serve
you well as you proceed through the software implementation process.
In this course, you will expand on your ability to apply computing technology to engineering practice by:
Identifying what parts of an engineered solution can benefit from a programming approach;
Creating data models that best fit the engineering domain being implemented;
Breaking down a large problem into workable parts and then integrating an overall solution;
Effectively communicating design intent through documentation and programming style;
Becoming adept at using online sources to enhance your coding prowess (life-long learning); and
Visualize results using computer graphics (OpenGL).
Prerequisites: none
2. Instructors
Nestor Gomez, Ph.D., P.E. T.A.: Jaidev Singh Chadha
[email protected] T.A. email: [email protected]
Scaiffe Hall 305
(412) 944-6515 T.A: Yayati Jadhav
Office hours: Tues/Thurs, 9:30-noon T.A. email: [email protected]
Tues 1:30-4:40 or appmt.
3. Textbook and References
The recommended (not required) textbooks for the course are listed here, with the full knowledge that
you will likely not use them.
Stroustrup, Bjarne. The C++ Programming Language.
This is the classic reference book, written by the creator of the C++ programming language.
Shreiner, Dave and Mason Woo, Jackie Neider, and Tom Davis. OpenGL programming Guide: The
Official Guide to Learning OpenGL Version 2, 5th Edition
The official reference for OpenGL may be useful to have on hand.
In addition, it is likely that you may also want/need to use manuals and/or instruction guides for
programming, especially when you forget a small detail or need a little push. Here is a list of
recommended sources (printed and electronic):
http://www.google.com -> most questions are answered in first 5 hits.
http://www.codeguru.com -> more directed to Microsoft Visual C++, but good all-around too.
http://www.stackoverflow.com -> a discussion group where senior programmers answer questions.
https://www.khronos.org/registry/OpenGL/index_gl.php -> OpenGL documentation, a bit raw.
5. Grade Breakdown
In‐class Exercises (participation mostly) 5%
Problem Sets 60%
12 assignments, 5% each
Individual Project (Demo) 15%
Team Project 25%
Total 100%
6. Problem Sets
Learning to program does not need to be intellectually problematic and emotionally torturous, as is often
believed and stereotyped. The analogy of learning to code with learning a new language is, I believe,
erroneous in that modern computer languages can be used to reflect the human way of thinking, rather than
having humans adapt to the computer’s limitations.
Since hands-on experience is an absolute must to truly internalize the use of a programming language and
apply it to the design process, all of your graded effort in the course will consist of problem sets and
projects. There will be 12 assignments in the course, mostly requiring the creation of code. Towards the
end of the course, you will work in small teams to develop your original software creations.
There will be a problem set due essentially every week and each should be turned in on time through the
Canvas. Problem sets are typically due at 11:59pm on Tuesdays. As a deterrent from untimely submittal,
there will be a 30% decrease in the homework’s score for every day (including weekends and holidays)
that the homework is late (e.g., 4 hours late = 23 hours late = 30% off, 25 hours late = 47 hours late = 60%
off, 49 hours late = 90% off, so why turn it in?). Extenuating circumstances will excuse at least part of the
deduction, but these should be discussed ahead of time.
I fervently advice you start working on the assignment as soon as it is posted, rather than waiting to the last
minute. Carefully re-read the previous sentence. I am not advising that you finish the assignment early
since I am realistic about how student life actually works. What I am suggesting is that you START early,
even if you cannot schedule enough time to finish until closer to the deadline. 30 minutes of work on a
Friday afternoon can save you three hours of frustration on Tuesday night.
7. Individual Project
In the individual project, students write a 1-minute long demo program and present it in class. A demo
program is a non-interactive presentation of graphical and audio programming techniques. See Demoscene
(http://www.demoscene.info/the-demoscene) for more details. We’ll discuss this in more later in the
semester, but rest assured that this is fun/creative activity.
8. Team Project
In software development, collaborative coding is the norm. Thus, the primary focus of the team project is
to experience writing a program in a team environment. The project will require your team (3 to 5
members) to develop a program in an engineering field (with perhaps some leanings towards educational
or entertainment, but don’t forget who you are). Commercial-grade software is absolutely NOT expected.
9. In-class Exercises
Since we cannot cover every topic in the problem sets and we do not want to miss out on the hands-on
experience for learning programming skills, we will be performing in-class exercises sporadically
throughout the semester. It is suggested that you bring your laptop to each lecture in order to take full
advantage of these exercises (although not all exercises require actual coding).