Programming for Engineers
ME EN 5250/6250
CS 5962/6962
BIOEN 5900/6900

Meeting Time: MW 8:05 AM - 9:25 AM
Classroom: WEB L102
Office Hours:
Course Instructors: Pavol Klacansky, Zhimin Li, Di Wang, and Valerio Pascucci
Instructor Webpage: www.cedmav.com

Description

Many modern engineering systems incorporate computational elements, while other engineering systems needed to be validated through computational tools or through computer-aided data collection. This course is designed to provide a foundation in programming, software engineering, debugging, and using existing computational codes in the context of analyzing scientific data, develop efficient data processing modules, and visualizing results.

The course will be taught using the C++ and Python programming languages. C++ provides high performance, modern programming capabilities in an advanced object-oriented framework. Python provides a programmer-friendly environment with high productivity during the development of new applications. The course provides a level of programming proficiency to students planning on taking additional coursework with a programming emphasis or who might need custom computational applications in their research.

We will start by covering all basic concepts in the C++ programming language and the Visual Studio development environment. Prior programming exprience is not a strict requirement but some exposure to basic programming environments (Matlab, Arduino C, etc.) is very helpful. The class will introduce the students to modern programming concepts in object-oriented programming including classes and methods, polymorphism, and templates. In addition, the Python language will be used to enable students familiarity with a modern GUI library like Qt and quick prototyping capabilities in a scripting mode.

The course will use a mixture of short programming exercises and longer, task-oriented programming assignments that demonstrate commonly used tools and libraries.

Grading

Programming Exercises (homework): 60%
Mid-terms and a final: 35%
Classroom participation: 5%

This is a combined 5xxx-6xxx level course. Students taking the 6xxx section will have advanced material/extra work added in mid-terms and a final.

Grade ranges mapping of numerical scores to letter grades will be assessed at the end based on a variety of factors including the overall performance of the class.

Reading Material

Extensive notes (100+ pages) written by David Johnson for the course topics will be made available. There is also a variety of online resources that will be provided as course page links that provide an appropriate level of detail for this course. If you want a more comprehensive book to refer to you want to consider C++ Primer Plus, sixth edition, but it is not required.

Policies

Late Policy: Zero credit is given for late work, please just submit what you have for partial credit if unfinished. However, you can have three late calendar days to use at your discretion. You must notify the instructors via Canvas of your intent to use this privilege by the original due date. Also, additional leeway can be given for officially sanctioned University activities (conference travel, etc.) if previous notice is given to the instructors via Canvas.

Communication: A key responsibility for a student in this course is to use the online Canvas class website and to check it regularly for due dates, updated materials, and corrections. To send urgent messages to everyone in the class, such as corrections to assignments or changes in due dates, I will make use of the email addresses connected to the Canvas site. Students are expected to check their email and the class website regularly.

Students who would like to ask a question should email the instructors through the Canvas site. Questions should be addressed to "All TAs", you will get all the course staff, so that is really the best way to get a response. For technical questions regarding clarification on assignments, it is best to post the question on discussion board so that everyone can see the question and response and possibly provide a suggestion. I will often bounce technical questions sent personally and answer to the entire class for a principle of fairness. In short, the discussion forum is the best place for a technical discussion since it involves the entire class.

Working Together: Students are encouraged to discuss assignments with fellow classmates, but students are responsible for writing their own answer. Cheating is: sharing written or electronic work either by copying, retyping, looking at, or supplying a copy. Cheating is: writing a solution during or immediately detailed discussion so that it leads to very similar solutions. Cheating is not: discussing high-level idea, answering questions about concepts or clarifying ambiguities, or helping someone understand how to use the class tools and software. Of course, there must be no collaboration or access to any material during examinations. Please see the University of Utah Student Code for a detailed description of the university policy on cheating.

Students with Disabilities: The University of Utah seeks to provide equal access to its programs, services, and activities for people with disabilities. Students who need accommodations in this class should give reasonable prior notice to the Center for Disability Services, 162 Olpin Union Building, 581-5020 (V/TDD). CDS will work with the student and instructor to make arrangements for accommodations.

INCLUSIVITY: It is our intent that students from all diverse backgrounds and perspectives be well-served by this course, that students' learning needs be addressed both in and out of class, and that the diversity that the students bring to this class be viewed as a resource, strength, and benefit. It is our intent to present materials and activities that are respectful of diversity: gender identity, sexuality, disability, age, socioeconomic status, ethnicity, race, nationality, religion, and culture. 

We also expect students to treat others in the class, including the teaching staff, with the same level of respect. Your suggestions on how we can make the course more inclusive and welcoming are encouraged and appreciated. You can give us feedback in person during office hours, or through our anonymous form.

We take incidents of discrimination, bias, and harassment seriously. We will file reports with the  Office or Equal Opportunity, Affirmative Action, and Title IX (OEO) about such incidents. If you are unsure what differentiates free speech and professional behavior from discrimination, bias, and harassment we are happy to have an open, judgement-free, and confidential conversation with you, or refer you to the OEO.