PythonSneks Field Guide

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

Catalog Description

The Course contextualized with scientific and engineering problems. Computational problem-solving skills and software solutions in addition to Python language fundamentals. The basics of control flow with loops and conditionals, state tracing and manipulation, simple and complex types, organization of code using functional and object-oriented coding strategies, and data processing. Create, interpret, and debug programs. Ethically debate important issues in computing culture.

Learning Objectives

Having successfully completed the course, students will be able to…

  1. Create simple programs that solve problems using Python.
  2. Interpret and debug a Python program using debugging techniques.
  3. Describe, identify, and use core language elements of the Python programming language.
  4. Represent data using simple and complex types to perform basic data processing.
  5. Trace and code non-linear control flow in a program using loops and conditionals.
  6. Organize code using functional and object-oriented programming strategies.
  7. Summarize, criticize, and argue ethically about computing culture and history


With the prevalence of computing in all aspects of our lives, programming is increasingly becoming a core skill for scientists, engineers, and other non-computing disciplines. Developing proficiency with code and its associated culture is a not only a national need for all learners, but is especially relevant to Virginia Tech students as the university moves forward into the future, as recognized by the ongoing general education curriculum revisions in Quantitative and Computational Thinking. Although there are other existing introduction to computing courses offered at Virginia Tech, this course is distinguished by targeting a broad class of learners with scientific and engineering backgrounds who need a practical but beginner-friendly introduction to programming in a way that will prepare them for future careers.

The decision to teach a course centered around the Python programming language is a motivated by the many advantages of Python for the general student population. Python is a popular programming language for a wide range of tasks, including data processing, scientific computing, and much more. Its clear syntax and reader-friendly language makes it easy-to-learn while also being quite expressive and powerful. A tremendous number of real-world and educational materials have been created in the language and its associated tools, making it an authentic and well-scaffolded topic for novice programmers.

This course provides students with an intellectual perspective on the core ideas of computation and the methodology central to the practice of computing by: (a) engaging students with computational models in a variety of technical disciplines, (b) exposing the core elements of computation and algorithms that underlie these models, and (c) working with data sets that have real-world characteristics (real-time, complex, and/or large scale). In addition, the social, political, and ethical impacts and implications of an increasingly computing-oriented culture are briefly examined.

This course is proposed at the introductory level because it does not require any college level background (e.g., in programming, mathematics, or statistics), thus creating a learning environment open to all students regardless of prior experience in computing. Furthermore, the conceptual and practical skills gained through this course will significantly enrich the student’s learning experience in various fields of study, underpin the use of computationally-oriented problem solving, and encourage additional study of computational techniques and skills.