Engineering 101: Introduction to Computers and Programming

Instructors:

Laura Alford, Naval Architecture and Marine Engineering

Lesa Begley, Naval Architecture and Marine Engineering

Administration:

Krista Quinn, engin-fyp@umich.edu (Please send questions about course registration to this e-mail address

Theo Landman, engr101coursecoordinator@umich.edu

This course is a “semi-flipped classroom” style course. There will be approximately two hours per week of asynchronous, self-paced learning to introduce course material; one required lecture per week to go through demonstrations and applications of course material; and one required lab per week for collaborative, hands-on practice. Additional homework consists of projects and assessments. See the course website engr101.org for details on how past semesters of the course were structured as this semester will be very similar. Please Note: There is not a required textbook for this course.

Please Note: There is not a required textbook for this course. 

Course website: ENGR 101

No programming experience is required or expected for students entering Engineering 101. 

Engineering 101 focuses on solving engineering problems with computer programming. Every engineering discipline uses computing to solve relevant and interesting problems, and this class prepares students to effectively apply computing to their future classes and careers. 

We start with basic programming concepts, and work up to more advanced topics. By the end of the class, students will have a working knowledge of how to assess an engineering problem, plan out a solution using computer programming, and implement the solution. This class covers both MATLAB and C++, two complementary programming languages used in different settings. Engineering 101 teaches to the strengths of both of these languages. 

Learning MATLAB

In the first half of the course, we focus on tasks that MATLAB is particularly useful for: quick data analysis, image manipulation, and plotting. Here is an example of a figure from one of the MATLAB projects: a summary of the data analysis for the location of a potential offshore wind farm. 

Learning C++

In the second half of the course, we use C++’s finer-grained control over a program’s decision-making capabilities to write more complex programs that implement established algorithms to solve an engineering problem. An algorithm is just a detailed set of steps that will solve a problem. Here is an example of output from one of the C++ projects: the results of applying an algorithm to solve a traveling salesperson problem, in this case, the planets to visit in a galactic version of a ride-sharing service. 

Code outputting a map algorithm

Why Do We Teach Two Different Programming Languages?

Great question! As we mentioned, ENGR 101 focuses on solving engineering problems with computer programming. Computer programming is a tool that you can use, but it’s important to use the best tool for the job. A fork is not the best tool to use for washing your face; a washcloth is a much better choice. By teaching more than one language, students learn when to use each language, and will also be able to adapt more easily to additional programming languages they may need in the future.

Course Structure

Core course content is provided via an interactive learning platform; access to this platform is free to students. The core content and skills directly support the work that is done in the lab section of the course. 

There is a two hour lab each week in which students work in small groups to collaboratively apply the core content and skills to lab exercises. The lab exercises directly support the concepts and skills needed to complete the projects in the course. 

There are six projects that give students the opportunity to use their computer programming skills to solve engineering problems. The projects focus on specific engineering problems, and the skills learned in the projects can be carried over to real-world computing projects.

For more information, including past semesters’ syllabus and schedules and an extensive FAQ guide, please go to the course website at engr101.org

Requesting an Override to ENGR 101

Please do not email the professors to request an override. Engineering students should contact the Office of First Year Programs at engin-fyp@umich.edu and Non-Engineering students (cross-campus transfer) should complete the form found in the “For LSA Students” tab.

For LSA Students

LS&A students: If you are interested in obtaining an override for ENGR 101 as a prerequisite for transferring to the College of Engineering, complete the online application form. These requests are reviewed after first year engineering students are finished registering. This means that you will not find out if you are approved to register until late August/early September for fall, and late December/early January for winter. 

Work with ENGR 101 as a GSI/IA

If you are interested in working with ENGR 101 as a GSI or an IA, please fill out this form, and your name will be added to our list of interested students. We will contact you with how to apply. Application windows are roughly mid-March and mid-November (we may or may not have staff openings for any given semester). If you have any questions about this process, please contact the Office of First Year Programs at engin-fyp@umich.edu.

GSI Information

The GSI application is sent approximately mid-March for Fall and mid-November for Winter to students that complete this interest form. Instructors begin the interview process roughly 30 days after the application is sent. You are notified by email of the status of your application. Offers are extended by the end of the current semester. Please note that the course may or may not have GSI openings in a given semester. If there are no openings, no application is sent. All offers are contingent upon a successful background check. Both incoming and current graduate students are eligible for GSI positions. Please see the ADUE Class Size Policy for the GSI to student ratio in ENGR courses.