Assessing Engineering Computation in a Flipped Course
Stormy Attaway, Mechanical Engineering, Boston University
I usually teach the basic computation course for all engineering freshmen, which is essentially a course on computer programming concepts. The concepts are the most important aspect of the course. We introduce many computational thinking concepts using MATLAB in the first two-thirds of the course, then switch to C to reinforce the concepts and then introduce new ones. Over the last several years, I have made major changes in the course, resulting in increased student engagement and learning. These changes have been made systematically, employing evidence-based techniques:
- Created a flipped class, enabling an active learning environment and peer-to-peer learning
- Created online pre-class learning modules, each consisting of a series of short lecture videos followed by assessment questions, as well as documents describing the expected learning outcomes, concepts and functions to be covered
- Created a class structure in which students, in small groups, first solve my problems, and then design their own problem sets and solutions and share them with others by writing them on the walls
- Created test suites to auto-grade student codes online, providing immediate feedback
The new format of my course has been very successful. Overall grades have increased, and the number of D/F/W grades has decreased. Attendance has increased, which I take to be an indication of increased engagement.
One of the main challenges is that students who are new to coding and computational thinking are very intimidated in the beginning of the semester. I believe that a very thorough, systematic introduction is the best way to combat that (rather than throwing a lot of stuff at them right away). Every day is crafted so that students will first learn the concept, then learn the proper syntax, and finally how and when to implement it. For example, if the concept of the day is loops, students:- learn to trace a loop to see what it accomplishes
- write a loop that follows my specifications
- recognize when to use a loop
- create their own applications in which loops are used
- combine loops with other constructs that they have learned
- incorporate loops into applications
In class, students are not allowed to use the software. Instead, they work on paper and on the walls so that they can focus on the concept and not the syntax. Later in the day, they attend a lab in which they do use the software.
There are also 3 exams in the course, several homework assignments, and a final project.
Assessments are done weekly:- Twice a week:
o Pre-class: Simple assessment questions after each online lecture video- Discussion at the end of the week: 15 minute quiz on paper
o In class: Individual Practice Problem in the first 5 minutes to assess students' preparation for class; no grading done for the in-class problem sets (attendance grade only).
o In lab: random checks of problem sets.
o Post-lab: In the MATLAB part of the course, students submit problem solutions to MATLAB Grader. In these problems, students are graded not just on the final result, but on the process (e.g., you must use a loop, or you may not use any loops – vectorize.)
The exams are also on paper. I have found that when students have to code online, they bog down on syntax, and I would prefer to grade mostly on concepts.
The homework and project are group assignments, and are graded according to published rubrics.