PythonSneks Field Guide

An instructionally-designed, open-source introductory Python curriculum for university settings

Learner Analysis

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.

Course Interest

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%

Prior Computing Experience

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%

Comfort Level

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.