Get an introduction to programming with one of the hottest languages, Python.
Principles of Computation with Python
- What students will learn
- Learning objectives by module
- Course assessments, activities, and outline
- Other course details
- System requirements
- Included instructor tools
What students will learn
- Programming with Python (Introduction, Conditionals, Loops)
- Iterative Processes
- Recursive Thinking
- Representation of Data and Instructions in Binary
- Cellular Automata as a Means of Generating Random Behavior
- Encryption Methods
- Limits of Computability.
Learning objectives by module
Unit 1: Introduction to Programming with Python
- Module 1: Introduction to Programming with Python
- Evaluate expressions and execute basic statements (also known as commands) using a Python interpreter.
- Predict the meaning of code before interacting with the interpreter.
- Recognize what is a computer program, a programming language, and a programming language interpreter.
- Use user-defined and built-in Python functions.
- Write and run Python.
- Module 2: Iteration
- Create and access elements in a Python list.
- Design and code simple algorithms using iteration.
- Design and code simple algorithms with nested iteration.
- Identify an iterative algorithm and express it using a loop structure.
- Trace iterative algorithms.
- Module 3: Making Decisions
- Apply relational and logical operators and functions to form Boolean-valued expressions
- Design and code algorithms involving decisions
- Determine the value of a given Boolean-valued expression
- Trace Python code containing conditional statements (if-else statements)
- Module 4: Putting Iterations and Decisions Together
- Design and code simple algorithms that require conditionals and loops for processing a collection (list) of data items
- Trace Python code containing conditionals and loops
- Translate a given algorithm to Python code using conditionals and loops
Unit 2: Principles of Computation
- Module 5: Recursion
- Be able to trace simple recursion algorithms.
- Identify a recursion algorithm.
- Module 6: Data Structures
- Given a problem that requires storage and retrieval of information, determine which data structure is most appropriate.
- Identify some basic data structures commonly used in description of algorithms and in programming with a focus on arrays, singly linked lists, stacks, queues, and binary trees.
- Identify the distinguishing features of each data structure to reason about their advantages and disadvantages with respect to memory usage and running time.
- Module 7: Data Representation
- Be able to convert between integers represented in decimal and integers represented in binary.
- Be able to convertbetween integers represented in decimal and integers represented in binary.
- Define binary representation.
- Describe how different data types can be represented in binary.
- Module 8: Encryption
- Be able to identify one-way functions.
- Define what is meant by encryption and identify application areas where encryption is critical to our everyday way of life.
- Explain the basic principles of encryption and decryption using a substitution cipher.
- Trace the RSA algorithm to show how modern encryption and decryption is performed.
- Module 9: Computability
- Determine the orderof complexity for the exhaustive search algorithms for several decisionproblems.
- Explain why computing the solutions for intractable problems will take a huge amount of time unless the size ofthe problem is small.
- Module 10: Cellular Automata
- Create future generations of a cellular automaton by applying a given rule correctly.
- Define cellular automata and identify one dimensional automaton.
- Demonstrate the relationship between a rule number, its description and its pictorial form.
- Explain the binary nature of these rules and calculate the maximum number of rules that this system allows.
- Look at a result of a cellular automata and determine if the output could be used as a random number generator.
Course assessments, activities, and outline
UNIT 1: Introduction to Programming with Python
Module 1: Introduction to Programming with Python
Quiz: Introduction to Python
Module 2: Iteration
Module 3: Making Decisions
Quiz: Making Decisions
Module 4: Putting Iterations and Decisions Together
Quiz: Putting Iterations and Decisions Together
UNIT 2: Principles of Computation
Module 5: Recursion
Module 6: Data Structures
Module 7: Data Representation
Module 8: Encryption
Module 9: Computability
Module 10: Cellular Automata
Other course details
This course supplements a traditional semester-long introductory course in computing. Ten modules are included and the estimated pace is one module per week.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
- internet access
- an operating system that supports the latest browser update
- the latest browser update (Chrome recommended; Firefox, Safari supported; Edge and Internet Explorer are supported but not recommended)
- pop-ups enabled
- cookies enabled
Some courses include exercises with exceptions to these requirements, such as technology that cannot be used on mobile devices.
This course’s system requirements:
- None. A Python environment is embedded in the course materials; learners will benefit from access to a Python interpreter, however.
Included instructor tools
Instructors who teach with OLI courses benefit from a suite of free tools, technologies, and pedagogical approaches. Together they equip teachers with insights into real-time student learning states; they provide more effective instruction in less time; and they’ve been proven to boost student success.
If you’d like to update an OLI course for your students, or even develop a new course or program of study, contact OLI Support for information about the OLI Author platform.
Learning and participation data is displayed in the Learning Dashboard. Read more.
Learning Engineering is the virtuous cycle of iterative improvement of learning content, instructional technologies, and the greater scientific research community. Read more