Computer Science 1 Syllabus
Classroom Contact Information
Teacher: Mr. Poston
Email: john.poston@risd.org Phone: 469-593-3084
Course Description
This course uses Snap!, a blocked-based programming environment, and transitions to Python, a text-based programming language. Computing has changed the world in profound ways: it has opened wonderful new ways for people to connect, design, research, play, create, and express themselves. However, using the computer is just a small part. This course is an introductory programming course that helps prepare students for more advanced programming courses. We will use Snap!, an approachable, visual, block-based programming language, with a robust tool set, perfect for introducing students to code for the first time. Snap! is taught during the first semester of the full year course. In second semester, students will benefit from exposure to a Python-based programming curriculum.
Prerequisites
This course is designed for students with algebra readiness skills. No prior programming experience is required.
Supplies and Expectations
Class Supplies
Pen or pencil
Paper
A good attitude
Class Expectations
Arrive to class on time
Be prepared to learn
Work hard and learn from your mistakes
Follow the posted classroom expectations
Grading Categories
Minor Grades: 40% Major Grades: 60%
Late Work Policy
An absent student is allowed one make-up day for each absence, plus one day. The assignment is penalized ten points for each day thereafter. A student who knowingly submits a late assignment will be penalized ten points each day after the due date.
Curriculum - Semester 1
Unit 0: Beginnings
Lesson
Objectives
0.1 The First Day
Identify the class they are taking. List the high-level goals of the course. Describe classroom procedures, rules, and norms.
0.2 Algorithms
Define “algorithm.” Construct algorithms for performing simple tasks.
0.3 Programming Languages
Complete the Minecraft Adventurer lab from code.org with guidance. Explain why computer programs are written in specialized languages.
0.4 Snap Self Portrait
Create a simple "program" in Snap! to describe yourself.
0.5 Snap Coordinate System
Create a drawing using the Snap! Coordinate System.
Unit 1: Snap! Basics
Lesson
Objectives
1.1 Welcome to Snap!
Define and identify “blocks,” “scripts,” “sprites,” and “the stage” in SNAP. Write simple SNAP programs. Describe what simple SNAP programs do without executing the code.
1.2 Building Blocks
Name the categories of blocks in SNAP and describe what the blocks in each category do. Describe the function of several common SNAP blocks. Be able to use common blocks to build simple SNAP programs.
1.3 Drawing Shapes
Construct simple algorithms to draw shapes. Convert algorithms into SNAP programs.
1.4 Animation
Animate SNAP sprites using costume changes and movement. Trigger action in other sprites using broadcasts.
1.5 Storytelling Project
Apply basic programming and SNAP skills to create an animated movie, play, nursery rhyme, or other scene. Practice good debugging skills to correct issues as they arise while programming
Unit 2: Loop-de-Loop
Lesson
Overview
2.1 Loops
Define “loop” in a programming context. Explain why loops are useful. Implement simple repeat and forever loops in SNAP. Utilize loops to reduce redundancy in code.
2.2 Nested Loops
Use nested loops to solve programming problems.
2.3 Inputs and Conditionals
Ask for and receive user input in a SNAP program. Use simple conditional (if and if-else) blocks to alter control flow in a SNAP program.
2.4 Variables
Use variables to track values throughout a program.
2.5 Boole in the House
Define and identify Boolean expressions and operators. Evaluate Boolean expressions. Utilize Boolean operators (and/or/not) to create compound conditions.
2.6 Pong Project
Implement a well-written version of Pong. Practice good style and conventions to create readable and maintainable code.
Unit 3: Variables and Customization
Lesson
Objectives
3.1 Abstraction and Generalization
Define abstraction, detail removal, generalization, and procedural decomposition in a computer science context. Describe how utilizing procedural decomposition can improve the readability and maintainability of algorithms and/or code. Recognize opportunities to improve algorithms by abstracting or generalizing parts into sub procedures.
3.2 Combining Loops and Conditionals
Build custom command blocks in Snap. Utilize detail removal and generalization to construct blocks that practice abstraction.
3.3 Customization I: Arguments
Build custom command blocks in Snap. Utilize detail removal and generalization to construct blocks that practice abstraction.
3.4 Customization II: Reporters and Predicates
Build custom reporter and predicate blocks in SNAP.
3.5 Platform Game Project
Use loops, variables, and Boolean expressions to implement a Super Mario Bros. style platform game. Practice good debugging skills to correct issues as they arise while programming.
Unit 4: Lists
Lesson
Objectives
4.1 Intro to Lists
Explain the concept of a “list” in a programming context. Identify scenarios in which lists are useful
4.2 Static Lists
Create static lists in SNAP. Access elements of a list. Add and remove elements from a list.
4.3 List Practice I
Traverse a list, accessing each element one at a time. Perform operations combining all elements in a list. Select defined subsets of elements in a list.
4.4 List Practice II
Traverse a list, accessing each element one at a time. Perform operations combining all elements in a list. Select defined subsets of elements in a list.
4.5 Sequential Search
Explain the sequential search algorithm. Implement several variations of sequential search.
4.6 Word Guessing Game Project
Use lists to implement a complete version of a word guessing game. Exercise good programming practices to produce code that is not only functional but also elegant and well-written.
Unit 5: Cloning
Lesson
Objectives
5.1 Intro to Cloning
Explain why prototyping and clones can be useful. Describe how complex goals can be accomplished using cloning.
5.2 Cloning Sprites
Demonstrate the difference between sprite and global variables. Explain how cloning and prototyping simplify working with numerous similar sprites in the same program. Create prototype sprites and clones of the prototype sprite. Explain the difference between a “master” sprite and a “clone” sprite.
5.3 Communicating with Clones
Pass information to individual clones. [Optional] Describe a race condition that might occur due using global variables and clones. Delete clones when they are no longer needed.
5.4 Space Invaders
Use cloning to implement a complete version of “Space Invaders.” Exercise good programming practices to produce code that is not only functional but also elegant and well-written.
Unit 6: Final Snap! Project
Lesson
Objectives
6.1 Design Basics
Identify the key considerations when designing a piece of software. Describe methods for prioritizing features, use cases, and/or scenarios. Explain why design and planning are necessary steps in the software engineering process.
6.2 Brainstorming and Evaluating
Identify factors to use when choosing between project ideas. Rank a group of proposed project ideas using the identified factors.
6.3 Spec Writing
Identify the main components of a functional project specification and explain the purpose of each section. Develop a project idea into a full, detailed specification
6.4 Building a Plan
Identify the main components of a functional project specification and explain the purpose of each section. Develop a project idea into a full, detailed specification.
6.5 Project Implementation
Use the skills developed throughout the course to implement a medium- to large-scale software project. Realistically evaluate progress during software development and identify when cuts are necessary. Prioritize features and scenarios and choose which should be eliminated or modified if/when resources and/or time become limited.
Curriculum - Semester 2
Unit 7: Introduction to Python
Lesson
Objectives
7.1 Set Up
Define and identify: IDE, Python. Identify the key concepts that will be covered in the course. Set up and log into an account for the course's online IDE. Save and turn in a file via the online IDE.
7.2 Interactive Mode
Define and identify interpreter, string (str
), integer (int
), float (float
), value, errors, console, expression. Use the Python interpreter to evaluate simple math expressions. Distinguish between an integer, float, and string.
7.3 Script Mode and Variables
Define and identify script, print
, run, output, variable. Write a simple script and run it in the IDE. Print values out to the console (both composed values and from variables). Compare script mode vs interactive mode. Know how to store a value into a variable.
7.4 Variables Input
Define and identify comments, storing, mutability, variable assignment, input
. Assign and swap variables. Store user input into a variable.
7.5 Debugging
Demonstrate your understanding of key concepts covered up to this point. Define and identify debugging, syntax errors. Analyze and respond to error messages.
7.6 Madlibs Project
Apply basic Python knowledge about inputs/outputs and variables to create a game of Madlibs. Practice good debugging skills.
Unit 8: Data Types and Conditionals
Lesson
Objectives
8.1 Data Types and Casting
Define and identify type, string, casting, floating point number (float), integer. Describe different representations of data in Python. Convert from one data type to another data type.
8.2 Booleans & Expressions
Define and identify Boolean, expression, composition, True
, False
. Evaluate a Boolean expression. Compose Boolean expressions using and
, or
, not
, <
, >
, and ==
.
8.3 Conditionals
Define and identify: if
, else
, elif
, conditionals, flow of control. Create chaining if
statements. Understand how conditional statements alter the flow of control of a program.
8.4 Lists
Define and identify list, item, index, integer. Be able to access items from a list using the index. Create lists of different types. Use the length function.
8.5 Lists 2
Define and identify slice, append, pop, remove. Slice a list. Add and remove elements from a list
8.6 Game Loop
Define and identify while loop. Use a while loop to simulate game play.
8.7 Adventure Game Project
Use knowledge of lists, Booleans, conditionals, and while loops to create a text-based adventure game.
Unit 9: Functions
Lesson
Objectives
9.1 Built-In Functions
Define and identify function, arguments, calling, importing, returning. Call the built-in randint
function, using arguments. Utilize code other people have written in the Python documentation. Understand the difference between printing and returning.
9.2 User-Defined Functions
Define and identify abstraction, def. Create functions.
9.3 Return vs. Print
Define and identify: return, none, void. Explain and demonstrate the difference between printing and returning.
9.4 Debugging and Scope
Define and identify scope, aliasing, stack trace. Understand that changing a list in a function updates the list outside of the function. Understand that updating variables in a function does not affect the variable outside of the function. Understand global variables. Draw a simple stack trace.
9.5 Project
Use project planning skills to complete a longer-term project. Create functions to organize a project. Apply skills learned in units 7-9 to create a functioning program.
Unit 10: Nested Loops and Lists
Lesson
Objectives
10.1 Looping Basics
Define and identify for
loop, item, iteration, scope. Recall looping in Snap! and reapply the concept in Python. Loop through (traverse) the items in a list. Be aware of the scope of variables during iteration.
10.2 For Loops
Define and identify range
. Use the range
and len()
function to update lists via for
loops.
10.3 Nested For Loops
Define and identify nested for
loops, stack trace. Use nested for
loops via a function and a for
loop. Use nested for
loops via two loops nested. Use a stack trace to understand and demonstrate the flow of nested for
loops.
10.4 Nested Lists & Looping
Define and identify nested list. Use nested for
loops to traverse through nested lists.
10.5 Debugging
Read and understand longer programs involving loops. Demonstrate knowledge of looping, lists, and nested loops/lists. Debug programs involving for loops and lists.
10.6 Tic-Tac-Toe Project
Use project planning skills to complete a larger project. Utilize loops, lists, and nested loops/lists to create a Tic-Tac-Toe game.
Unit 11: Dictionaries
Lesson
Objectives
11.1 Introduction to Dictionaries
Define and identify dictionary, key, value. Create dictionaries of key-value pairs. Access and update items from dictionaries.
11.2 Dictionaries Methods
Define and identify pop, default value. Update values in a dictionary. Add values to a dictionary. Remove values from a dictionary.
11.3 Dictionaries of Lists
Create dictionaries with keys and values of different types. Update, append, or remove list values in a dictionary.
11.4 Dictionaries Looping
Use loops to traverse through key/value pairs in a dictionary.
11.5 Guess Who Project
Use dictionaries to create the game Guess Who.
Unit 12: Introduction to Object Oriented Programming
Lesson
Objectives
12.1 User-Defined Types
Define and identify class, instance, object, attributes. Create a class and instantiate. attributes to an instance. Manipulate instances and attributes through a function.
12.2 User-Defined Types, Part 2
Define and identify self
, __init__
. Create a class with an __init__
method. Understand and use the self
argument. Instantiate a class with arguments
12.3 Methods
Define and identify method, __str__
, __add__
, operator overloading. Create a class with an __init__
method. Understand and use the self
argument. Instantiate a class with an argument.
12.4 Inheritance
Define and identify inheritance, parent class, child class. Create a class that inherits from anther class. Overwrite methods of parent class in a child class.
12.5 Pokemon Project
Engage in class design before beginning coding. Apply what was learned with respect to classes, methods, and inheritance to create an implementation of Pokemon.
Unit 13: Final Project
Lesson
Objectives
13.1 Final Project Brainstorming and Evaluating
Recall project planning basics from last semester. Identify factors to use when choosing between project ideas. Rank a group of proposed project ideas using the identified factors.
13.2 Defining Requirements
Define key scenarios for a project and the features required to implement each scenario. Explain the importance of wireframing when designing an application.
13.3 Building a Plan
Identify the main components of a functional project specification and explain the purpose of each section. Develop a project idea into a full, detailed specification.
13.4 Project Implementation
Use the skills developed throughout the course to implement a medium- to large-scale software project. Realistically evaluate progress during software development and identify when cuts are necessary. Prioritize features and scenarios and choose which should be eliminated or modified if/when resources and/or time become limited.
Unit 14: Music Programming
Lesson
Objectives
14.1 EarSketch Intro
Define and identify: Digital Audio Workstation (DAW), sound tab, fitMedia()
, setTempo()
. Play beats using the above functions. Loop through items in a list. Be aware of the scope of variables during iteration.
14.2 EarSketch Music
Define and identify: rhythm, beat, tempo, measures, setEffect()
, makeBeat()
. Play beats using the functions. Loop through items in a list. Be aware of the scope of variables during iteration.
14.3 EarSketch Control Flow
Define and identify modulo (%
). Review looping and control structures. Use looping concepts in music making via EarSketch. Use control structures to create music.
14.4 EarSketch User-Defined Functions
Define and identify abstraction, section, A-B-A form. Create and apply user-defined functions to create songs with complicated form.
14.5 EarSketch Project
Create a complete song in EarSketch with multiple parts. Utilize EarSketch's features and functions.
Last updated
Was this helpful?