This page contains materials which can be used to create a new modules, based on the material in Python for Rookies. We have included:
- Intended module learning outcomes
- Modal assessment criteria
- An example structure for a single semester module
Intended learning outcomes
The following are general learning outcomes suitable for a first course in programming, using Python for Rookies. There are chapter-specific learning outcomes at the beginning of every chapter of the book.
- Design and implement interactive programs using appropriate linguistic features of a given programming language.
- Demonstrate an understanding of imperative, declarative and object oriented language features and know when it is appropriate to use each.
- Employ appropriate facilities in a given programming language for data abstraction and encapsulation (for example, functions, modules, packages and classes).
- Write programs which make use of external libraries, APIs, etc. and apply their skills to a new programming language.
Example modal assessment criteria
The following are assessment criteria suitable for a first course in programming, using Python for Rookies. We have provided criteria for Pass and First Class modes, which are used at the institutions we have taught at. However, some Universities prefer to use other modes, in which case these should be suitably adapted.
For a pass mark (≥40%), students should be able to:
-
Describe an algorithm both formally and informally.
-
Use appropriate Python language structures to implement a formally or informally specified algorithm.
-
Test a program and note where it may be deficient.
-
Appreciate that some language features can be used to create equivalent code (e.g. for and while loops can both be used to implement iteration). Be able to translate programs using one language feature into those using an equivalent feature (e.g. translate a for loop into an equivalent while loop or vice versa).
For a first class mark (≥70%), students should be able to:
-
Consider several possible choices for the design and implementation of an algorithm.
-
Make defensible choices about which of Python's facilities for encapsulation (functions, modules, objects, etc) to use.
-
Improve a program, having tested it.
-
Determine which of an APIs facilities to use to perform a given task, based on the professional documentation for that API.
-
Write programs which take into account the needs of users. For example, it should be clear to users of an arcade game how the game controls work.
Module structure
Below is a typical module structure for a single semester module following Python for Rookies. We have found that in a single course of study, students can successfully move from no programming experience to writing a small, arcade game using 2D graphics.
-
Getting Started basic features of the chosen programming language and environment. Algorithms, bugs and debugging.
-
Programming Basics basic concepts of programming and programming languages. Specifically, students will learn about expressions, statements, commands, literals, variables and types. These will all be covered in more detail in later weeks, but here students will learn enough to enable them to write simple programs.
-
Boolean Algebra this is a concept that will also be covered in modules on hardware and mathematics. Booleans enable us to represent the concepts of
True and False in programs. In programming, Boolean algebra makes it possible to write programs which make choices between alternatives.
-
Choice students will make use of Boolean algebra and learn how to write programs which choose between alternatives.
-
Repetition: Recursion recursion is one of two ways to write programs which repeat some of their actions. In these sessions students will learn how to use recursion to draw fractal curves. Students will also draw one or more fractals of their own, which will be included in their portfolio of work.
-
Repetition: Iteration iteration is the other way of writing programs which repeat some of their actions. In this session students will see some of the examples that were covered in the previous work on Recursion. This should help students to learn how to implement repetition in different ways and to choose which language features to use for a particular task. One of the examples that will be covered is a simple form of encryption called the Caesar Cipher, which was invented by Julius Caesar to prevent his instructions to troops from being read by his enemies.
-
Compound Types this session covers how to represent and process complex pieces of information in the chosen programming language. Some of the concepts from Programming Basics will be covered in more detail, especially strings. Students will also learn about regular expressions, which can be used to perform powerful text processing.
-
Functions and Modules functions and modules are two of the basic building blocks of imperative programs. Students will already have met these concepts earlier in the module, but study them here in more detail. Students will learn about professional programming practice, including how to usefully document programs and how to write code for other programmers to use.
-
Input and Output most useful programs read data in from somewhere (a file, the keyboard, the Internet, ...) and produce some output (in a file, on the screen, etc). In this session students will learn all about input and output, including how to save data so that you can use it again.
-
Object-Oriented Programming object-oriented programming (OOP) gained enormous popularity in the 1990s and has become the de facto standard in much of the computing industry. In the 2000s, as dynamically typed languages have become more popular, many people have begun to think that it's good to have a choice about whether to use OOP or not, and how to solve some of the problems that OOP has created. Because OOP has become so important, students need to have a good understanding of what it is, when and why it's useful and how to write programs using object-oriented techniques.
-
Extensions this session gives an introduction to using libraries which do not come with the chosen programming language. This gives students a chance to find out how professional programmers make use of reusable software.