Course: Programming 101 Introduction to Python CIP Course Title / Code: Computer Programming / 110201 Duration: Part one of a two-semester series Grade Levels: 9-12 : Algebra I Alternatives: Programming 100 Computing for all, a slower-paced course taught primarily using visual tools. Standards: Unfortunately, no state or national standards exist for Computer Science at this time so alignment is difficult. I will focus on SCANs. This course will also address all three parts of EALR 1 of the Educational Technology standard: students use technology within all content areas to collaborate, communicate, generate innovative ideas, investigate and solve problems. Big Ideas Enduring Understanding Essential Questions SCANs Communication and limitations must be discussed. How is programming a collaborative activity? Basic: A, C; Writing: A, C; Listening: A, D; Speaking: A, B Planning Solutions to problems must be deliberately designed. What activities need to occur before programming? Self-Management: B, E Exploration Long-lasting learning occurs through experimentation. How do we explore in an informed way? Knowing How to Learn: A, B, C Modeling Real-world situations can be represented abstractly. How do we approach a realworld problem to model? Seeing Things in the Mind s Eye: A, B; Mathematics: B Patterns Finding patterns allows for generalized problem solutions. How do we look for patterns? Reasoning: A, B, C; Mathematics: A, C Decomposition Complex tasks can be broken down into discrete steps. What is the right number of steps? Problem Solving Abstraction Concepts or ideas can be separate from their specific instances. How does abstraction help us solve problems? Problem Solving Errors Errors are inevitable in complex systems and must be anticipated to reduce harm. What are the different kinds of errors? How do we protect our users? Decision Making Syntax Programming languages help us express problem solutions to computers. How do we avoid syntax errors? How are problem solving and syntax sometimes separate? Reasoning: A, C
Desired Results: Programming 101 Introduction to Python Course Understandings Course Essential Questions Course Skills Students will understand that Programming is a critically important skill in a broad range of industries including healthcare, transportation and finance Computer scientists and programmers come from all walks of life Programming is not a solitary activity Programming language syntax is independent from problem solutions Problem solving requires extensive planning Variables allow us to name and re-use values stored in memory Iteration is a core programming construct used to repeat tasks Conditional execution lets our programs execute differently based on conditions Data structures allow us to store and access related data efficiently and logically Users are an unpredictable source of input What is computer science? What is programming? When is Python a good tool to use? Why should we care about computer science? What does it take to be a good programmer? How do we break down a problem into steps? The student will develop basic programming skills including the ability to Read and analyze specification documents Ask for clarification on specifications Analyze sample input and output Draw memory state Write program documentation Specific Python skills will include the ability to: Create and manipulate variables Branch from different conditions Create and manipulate arrays Iterate over data Ask for user input Read files Print out relevant data to troubleshoot program errors
Acceptable Evidence: Programming 101 Introduction to Python Performance Tasks Other Evidence Self-Assessments Program: draw image patterns, scale based on parameter Program: play a guessing game with the user Program: from a set of images, display a collage Program: game of Breakout Program: natural language modeling : talk to someone about a program they would like to have and write a requirements sheet from it Prompt: what is computer science and how does it affect your life? Skill Check: bi-weekly puzzle challenges Quiz: variables, iteration, conditionals Quiz: arrays Final: tracing code, devising algorithms Self-assessment: was your guessing game well structured? What are some features you could have added? Reflection: what skills have you learned that you can transfer to other aspects of your life? Self-assessment: how thorough are your requirements? Do you think a developer could create the desired software with only your document? Self-assessment: how good is your natural language modeler? How can you tell its text apart from human text? What would it take to make it more human?
Topic List: Programming 101 Introduction to Python Introduction Computer Scientists Your impressions Survey What are Computers? Parts of a computer Industries that use computers What are Computers? Embedded computers Ubiquitous Digital What is Computer Science? Programming Research New applications What is Programming? Creating computer apps Solving problems Introducing Python Scripting language Interactive Your first program Expressions and variables Types, type() Type casting Drawing pictures Strings Concatenation Printing Functions Avoiding redundancy Grouping subroutines Functions Parameters Reading assignment writeups Comments Where to put them How many to use Programming style Usability Collaboration Scope Scope errors Troubleshooting If/else Elif Conditionals Iteration for x in range(n) while Iteration Media Using images Media Drawing with Python User input.readline() Verifying input Interactive programming Separating into functions Loops techniques Sentinel loops Fencepost loops Initializing Adding to Drawing Lists Iterating over lists for x in list Reading elements Changing elements Nested Loops Outer vs inner loops
Topic List: Programming 101 Introduction to Python Nested Loops Drawing complex figures Functions that return Using fruitful functions Not losing the output Functions that return Writing fruitful functions Writing clean code Descriptive main Random numbers What is meant by random Using good ranges Reading in files Manipulating data Line-based processing Writing out files Dictionaries Mapping keys to values Dictionaries Applications Natural Language Processing Tuples Errors Types of errors Error recovery Gathering requirements Interacting with users Making them exhaustive Program Managers Assertions Understanding code Thinking like a computer Limitations Problems computers can t solve