Skills
This course will teach the following skills, repeated assessment of which will form the primary source of final grades.
Each skill will be assessed as "Doesn't meet expectations", "Approaching expectations", and "Meets expectations", and students may attempt any skill assessment up to five times (four independently, and once via the bulk assessments, see below), with the best result being used for their grade.
A brief summary of what is expected for "Meets expections" is given below each numbered skill.
-
Design basic functions (Pyret)
- Type annotations (for basic types -- strings, numbers, images, booleans)
- Doc strings (concise, not redundant with type annotation, not including unnecessary implementation details)
- Test cases in
where
blocks (covering common cases, "edge" cases -- zero and negative numbers, empty strings, etc) - Well-formatted implementations -- clear naming for function arguments, no unnecessary
if
expressions, etc.
-
Construct / Transform Tables (Pyret)
- Create literal tables in code, and import them from CSVs (stored at URLs and files)
- Extracting rows and single values from tables
- Using common table utilities like
build-column
,filter-with
,transform-column
to transform tables - Use
lam
for more concise transformations
-
Iteration: Lists (Pyret)
- Use local mutable variables defined with
var
, along withfor each
loops to construct values incrementally, element by element from a list.
- Use local mutable variables defined with
-
Structured & Conditional Data (Pyret)
- Create and use data that has multiple fields, using field projection ("dot" notation) to access fields
- Correct type annotations for data type, vs. constructor name.
- Create and use data that has multiple variants, using
cases
to write code that can do different things depending on the variant.
-
Recursion: Lists (Pyret)
- Design functions over lists using
cases
, which recur on the tail in thelink
case.
- Design functions over lists using
-
Recursion: Trees (Pyret)
- Design trees using
data
, which have more than one field that refer to the data definition. - Design functions over trees using
cases
, which recur on the self-referential fields.
- Design trees using
-
Variable Scope (Pyret & Python)
- Understand the behavior of variables defined within functions and outside.
- Understand Python's variable definition and variable update behavior.
- Understand Python's
global
syntax, and why and when it is necessary.
-
Design basic functions (Python)
- Type annotations (for types like strings, numbers, booleans, lists)
- Doc strings (concise, not redundant with type annotations, not including unnecessary implementation details)
- Test cases in separate test functions using
assert
, followingpytest
conventions (covering common cases, "edge" cases, etc) - Well-formatted implementations -- clear naming for function arguments, no unnecessary if statements, etc.
-
Iteration: Lists (Python)
- Use local variables and
for ... in
loops to construct values incrementally, element by element from a list.
- Use local variables and
-
Aliasing & Mutation (Python)
- Understand the difference between modifying variables and modifying fields of dataclasses or elements of lists.
- Understand the consequences of having multiple variables pointing to the same data.
- Identifying Privacy Issues in Problem Formulation
- Identifying Stakeholders in Problem Formulation
Skill Introduction
Skills will be introduced in certain weeks (and may be re-inforced in later weeks), via class, recitation, labs, and HW. Each of these will be marked with what skill is being introduced or reinforced by the material.
Skill Assessment
Assessment of skills can be done at many different opportunities.
Assessable@Hours
Every week, there will be several special hours held by instructors, course coordinators, or graduate TAs, that exist solely for the purpose of taking assessments. The skills assessable at these hours are those that were introduced the previous several weeks -- see the table below to see what skill is assessable in any given week via this mechanism.
This is intended to allow you several attempts at the skill after the content is introduced, but require you to keep up with the material -- all assessments cannot be deferred to the end of the semester, since only the last few skills can be attempted at the end of the semester.
Skill Days
Several class days exist as gaps in our schedule, and some of the class may be used to catch up on material, but 30+ mins of class will be used for skill assessments. Instructors will bring a set of assessments -- students are able to attempt any of those available (likely, due to time, 1-2 of them). See the schedule below to see what weeks these occur in, and what skills are assessable during each one.
Skill Bundles
Finally, there are two bulk assessment slots, which take place during normal lab time, during the semester. These collectively cover all of the skills for the semester, and students are welcome to attempt all of the assessments available -- every student will be given a packet with a set of assessments when they come to the lab session. If they have already completed a given skill, they can skip that one, and if they have already completed all the skills, they are welcome to skip the bulk assessment entirely. The two bundles are:
Skill Schedule
Week | Topic | Skill Introduced | Assessable@Hours | Skill Day | Skill Bundle |
---|---|---|---|---|---|
1 | Programming with numbers, strings, images: IDE, interactions, operations on standard values | 11, 12 | |||
2 | Definitions, functions, conditionals: type annotations, test cases | 1 | |||
3 | Introduction to tables: constructing, importing, extracting | 2 | 1, 11, 12 | ||
4 | More on tables: transforming, filtering | 2 | 1, 11, 12 | ||
5 | From tables to lists: extracting columns, performing operations on them, visualizing data | 1, 2, 11, 12 | SkillDay1 | ||
6 | Computing with lists: iteration & mutable local variables | 3 | 2, 11, 12 | ||
7 | Structured & conditional data | 4 | 2, 3, 11, 12 | ||
8 | Working with trees: recursive functions | 5 | 3, 4, 11, 12 | SkillBundle1 | |
9 | More with trees | 6 | 3, 4, 5, 11, 12 | SkillDay2 | |
10 | Transition to Python: IDE, files, definitions, testing | 7, 8 | 4, 5, 6 | ||
11 | Transition to Python: more state & aliasing, loops, mutable data structures | 9, 10 | 5, 6, 7, 8 | ||
12 | Tables in Python: pandas & matplotlib | 6, 7, 8, 9, 10 | SkillBundle2 | ||
13 | File I/O: csv files, via pandas and manually | 7, 8, 9, 10 | |||
14 | More with Python: catch up, bonus content, etc | 9, 10 | SkillDay3 |