An instructionally-designed, open-source introductory Python curriculum for university settings
The students in this course will be undergraduate non-computing majors, predominately engineers. The course is designed to scale to a large audience, up to several hundred at a time. It should also work for smaller class sizes, too.
The course is not designed with any specific group in mind, and should be suitable for freshmen, sophomore, juniors, and seniors.
It is currently unclear how suitable this curriculum is for high school students and younger.
The material is heavily skewed towards STEM (particularly engineering) students. Less than 5% of the students from the Fall 2017 semester were in the arts or humanities. Assignments are geared towards STEM majors rather than Arts and Humanities, but is not meant to be discriminatory to those populations. These were our numbers from one instance of the course.
Major | Students |
---|---|
General Engineering | 21% |
Ind. & Sys. Engineering | 17% |
Mech. Engineering | 17% |
Civil Engineering | 8% |
Physics | 4% |
University Studies | 4% |
Other | 29% |
The class is designed to not cater to one gender, and seeks to support diversity wherever possible. The gender ratio is historically about 2:1 men vs. women, which is above average for many computing classes.
Students were surveyed on why they are taking the course. They were allowed to choose more than one option. Although many students are taking the class for a requirement, they have other interests in the material. Your students may vary in their interests.
Course Interest | Students |
---|---|
To learn how to program | 81% |
To fill a requirement | 80% |
To improve my resume/get a job | 57% |
It seems fun | 43% |
It seems easy | 15% |
To take a class with a friend | 11% |
Students were surveyed based on their prior computing experience. Many students actually had some prior experience. Some students will have previously taken one of the AP Computer Science courses in high school (e.g., Java), and introductory programming courses offered by this university (e.g., MATLAB). Although for some students this prior experience will be beneficial, it can sometimes lead to instances of students over-estimating their ability, negatively affecting the efficacy of nearby peers, and, in some cases, incorrect prior knowledge. The prior knowledge gap can be a huge problem in introductory computing courses, making it difficult to target the courses’ difficulty level.
Prior Computing Experience | Students |
---|---|
Another programming course at this university | 57% |
Another programming course in high school | 39% |
An online programming course (e.g., CodeCademy, Coursera) | 20% |
Another programming course at a community college | 4% |
No Answer | 17% |
Students were surveyed based on their comfort level. To summarize, 89% of the students reported some level of comfort with computers in general (at least 75% at the moderately comfortable level or higher). However, only 44% felt some level of comfort with programming in general (and in fact, 40% felt some level of uncomfortableness).
As opposed to the CT@VT “Introduction to Computational Thinking” course, the students in this course are expected to have more technical proficiency, and will be expected to learn more material at a deeper level. However, they may have less technical proficiency than students in an introductory course for majors. Interviews with the previous instructor of the course give descriptions of the students that match experiences with students in other introductory courses - low self-efficacy, lack of prior experience, and difficulty with threshold concepts (e.g., loops, data structures) are common.