CS-120: Introduction to Python

CS-120: Introduction to Python

I was the Subject Matter Expert for the development of CS-120: Introduction to Python, an asynchronous Undergraduate-level Computer Science course at Capitol Technology University. As the SME, it was my job to ensure the course stayed up-to-date with any new developments in the world of Computer Science and the Python language. This course was intended to be a gentle introduction to programming; it is actually one of the first programming offerings available in Capitol’s course catalog. With the rapid growth of the Data Science field, we felt Python was a necessary language for students to learn from the start of their education. The course description can be seen 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.

Educational material should always revolve around measurable desired 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 we developed eight course learning outcomes based on Bloom’s Taxonomy. These outcomes can be seen below.

  1. Interpret/articulate fundamentals of data storage, computer instructions, input and output  
  2. Design the logic of computer instructions/programs  
  3. Implement standard programming constructs: sequential, decision, and repetitions instructions, and functions (in Python)  
  4. Explain Python sequences, the difference between data structures, and how each can be applied 
  5. Compile and debug programs (in Python)   
  6. Integrate various data structures (in Python) 
  7. Write programs that incorporate file input, output, and record processing. 
  8. Employ built-in libraries to complete various tasks (in Python) 

The course took an asynchronous approach to instruction. This means that there are no live lecture sessions; everything is done on the student’s own time with only deadlines impacting when they can and can’t interact with the course and its receptacle of materials. However, at Capitol, asynchronous modality courses still provide students with an assigned instructor for any questions or concerns about the course material, assignments, grades, etc. I actually taught the first edition of this course asynchronously and found that it went incredibly smoothly. I attribute this to the extensive time we spent developing course material and researching high-quality third-party resources that we could leverage. The utilization of resources such as the Python Documentation repo, W3 Schools, Tutorials Point, and Stack Overflow as direct and supplemental learning resources was instrumental in the success of this course. While having incredibly customized assignments, lectures, and resources is absolutely essential to learning and growth, sometimes a third-party resource can fill a gap of knowledge or present a difficult topic from a different perspective which could really make the concept “click” for the student in a way that the course materials couldn’t.

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.

We also developed two eLearning modules to act as supplemental material within the course. I personally believe that eLearning will hold an increasingly important role in learning and growth at all levels. The act of interacting with the lesson, really involving and immersing the student, is incredibly powerful. When students are in the present and focused on the material, that’s where learning and growth occur. Those moments can be created with eLearning. Below is the first eLearning module that we created. I served as the SME for this module. The idea behind this eLearning module wasn’t to teach Python or how to program but to teach the student how to problem solve. Programming is heavily dependent on the developer’s ability to solve problems. In this interaction, we break down that process into a real-world example. Try the lesson out for yourself below!

We also built out an eLearning module for the final work of the course. Often eLearning is utilized to reinforce concepts taught during lectures, however, for this module, I wanted to take a different approach. We built out an interactive eLearning module with the intention of helping students continue their development after the course has concluded. The module is titled: Extending Your Python Skills. I wanted to provide students with a clear direction to take after completion of the course. Too often students learn and grow and flourish just to forget most of the content because they did not actively practice and test their knowledge after the class ends; this my solution to that problem. Journey through the module yourself below!

Client:

Capitol Technology University

Department:

Computer Science (Undergraduate)

Project Duration:

4 Months

Role(s):

  • Subject Matter Expert
  • Adjunct Faculty (Instructor)