Project
CS-120: Introduction to Programming Using Python

Capitol Technology University Department: Computer Science (Undergraduate) Course Longevity: 3 Years Project Duration: 4 Months
Roles: – Subject Matter Expert – Instructional Designer – eLearning Developer
eLearning Materials: CS-120: Week 1 eLearning Module CS-120: Week 8 eLearning Module
I served as the Subject Matter Expert for the development of CS-120: Introduction to Python, an asynchronous undergraduate-level Computer Science course at Capitol Technology University. In this role, I was responsible for ensuring the curriculum remained current with emerging trends in both the Python language and the broader field of Computer Science.
Designed as a gentle introduction to programming, CS-120 is one of the first programming courses in Capitol’s catalog. Given Python’s relevance and versatility—particularly in the rapidly growing field of Data Science—we prioritized it as a foundational language for students at the start of their academic journey.
The course description is provided below.
The course will cover basic concepts and elements of computer programming using Python. Topics include variables, constants, operators, expressions, statements, branching, loops, and functions. Additionally, Python-specific data structures, built-in functions, library modules, and working with external files will be applied in developing working code.
Course Learning Outcomes
Educational material should always revolve around measurable outcomes; we want to be able to answer the question: “what should the student be capable of by the end of this course”? That is why I developed eight course learning outcomes based on Bloom’s Taxonomy. These outcomes can be seen below.
-
Interpret/articulate fundamentals of data storage, computer instructions, input and output
-
Design the logic of computer instructions/programs
-
Implement standard programming constructs: sequential, decision, and repetitions instructions, and functions (in Python)
-
Explain Python sequences, the difference between data structures, and how each can be applied
-
Compile and debug programs (in Python)
-
Integrate various data structures (in Python)
-
Write programs that incorporate file input, output, and record processing.
-
Employ built-in libraries to complete various tasks (in Python)
Course Deep Dive
The course was delivered in an asynchronous format, meaning there were no live lecture sessions—students engaged with course materials on their own schedules, guided only by assignment deadlines. Despite this modality, Capitol Technology University assigns an instructor to every asynchronous course to support students with questions about content, assignments, grades, and other concerns.
I personally taught the first offering of this course and found that it ran exceptionally well. I credit much of this success to the extensive time we invested in developing high-quality instructional materials and thoughtfully integrating third-party resources. While custom-developed lectures, assignments, and activities form the foundation of effective learning, well-chosen external resources can help bridge knowledge gaps or explain complex topics from alternative perspectives. In many cases, this approach helped students grasp challenging concepts in ways that the core materials alone could not.
Weekly programming assignments and knowledge checks were implemented to keep students in a constant state of learning, development, exploration, and assuredness. The assignments were all structured as if they were real-life scenarios; actual problems that needed to be solved. This approach prepares the student for life working as a developer where you face real problems at work every day, not frequent and repetitive Leet Code problems or flurries of theoretical challenges (although both of these resources do have their place in the creation of a developer).
Keeping things practical allows a new student, a new developer, to be able to relate to the problem at hand. Diving straight into theoretical problems (ie. the Traveling Salesman problem) would just be too steep of a learning curve and could really push students away from the course and more importantly the field as a whole. The knowledge checks were a little more objective and granular compared to the assignments, but they both provided real-world lessons. Knowledge Checks were weighted low grade-wise, but high enough to make a dent in the student’s grades if they simply ignored them. These Knowledge Checks were seen as a safe space for students to test their knowledge and reassure themselves that they are prepared to move on to the next week of material.
Instructional Design & eLearning Integration
To maintain consistent engagement and reinforce learning, weekly programming assignments and knowledge checks were implemented throughout the course. Each assignment was designed around real-world scenarios, reflecting authentic challenges that developers face in professional environments. This practical approach helped students relate to the problems at hand and build the mindset necessary for problem-solving in industry contexts—rather than simply focusing on abstract exercises or repetitive algorithm drills (though resources like LeetCode and theoretical challenges certainly have their place in a developer’s growth).
By grounding assignments in realism, students were better prepared for what it’s like to work as a developer, where critical thinking and applied problem-solving are essential. Introducing highly theoretical problems too early—such as the Traveling Salesman Problem—can create a steep and discouraging learning curve, especially for beginners. Our goal was to ease students into complexity through relevant, relatable tasks.
Knowledge checks complemented the weekly assignments by offering low-stakes opportunities for students to test their understanding. These were more granular and objective in nature, offering reassurance before moving into new material. While knowledge checks carried a small weight in the overall grading scheme, they were intentionally designed to make an academic impact if ignored—encouraging students to stay engaged without introducing undue pressure. They were framed as a “safe space” for learners to self-assess and grow.
eLearning as a Pedagogical Tool
We also developed two interactive eLearning modules to supplement the existing course content. I believe that eLearning will continue to play an increasingly important role in both academic and professional learning environments. Its interactive nature fosters deeper student engagement, creating opportunities for immersive, active learning—often where the most meaningful growth occurs.
Week 1: Problem-Solving Foundations
As the Subject Matter Expert (SME) for the CS-120: Week 1 eLearning Module, I led the development of an interactive lesson focused not on teaching Python directly, but on strengthening students’ problem-solving skills. Since programming is fundamentally rooted in problem-solving, this module walks learners through a real-world scenario, helping them break down and approach challenges methodically.
CS-120: Week 1 eLearning Module
Week 8: Extending Your Python Skills
Our final module, “Extending Your Python Skills,” takes a forward-looking approach by guiding students beyond the course content. Rather than simply reinforcing lecture topics, this interactive module provides a roadmap for continued development, ensuring students retain their momentum and have practical steps to keep practicing after the course concludes. One common challenge in programming education is helping students maintain progress once structured learning ends—this module aims to close that gap.
CS-120: Week 8 eLearning Module