We may earn an affiliate commission when you visit our partners.
Hesam (Sam) Samimi

Highlights

Read more

Highlights

  • Introduction to Computer Science and Programming Workshop
  • Designed for High School and Junior High Students
  • Trains and Encourages Critical Thinking, Logical Reasoning, and Technology Orientation in Young Adults
  • Workshop: The Majority of Each Class Spent on Exercises Done by the Student
  • Covers Fundamental Topics in Computer Science and Programming, Major Areas of Computer Science, Including:
    • Science and Engineering
      • Real-World Modeling
      • Physics Simulations
      • From Model to Implementation
      • Reverse Engineering and Tinkering
    • Math and Computer Science Theory
      • Data Structures: Trees, Graphs
      • Algorithms: Shortest Path
    • Artificial Intelligence
      • Propositional Logic
    • Networks
      • Internet Protocols
    • Programming Languages
      • Functions
      • Object-Oriented Programming
    • And More
  • Not a Course about a Programming Language, Rather about Fundamental Ideas in Computer Science and Programming
  • Exercises Aid Learning, Using UC-Berkeley's Snap. Programming Tool (Designed for Kids and Young Adults)
  • 15-Week Course (26 Lectures)
  • 8+ Hours of Video Instruction, Plus Many More Hours Spent Doing the Exercises on Your Own
  • Accompanying Web Page for Each Class
  • Includes Lecture Slides, Links to Exercises on the Web Page
  • Learning Fundamental Ideas in Computer Science and Programming Will Set Students up to Go and Learn Any Programming Language
  • No Prior Knowledge or Experience in Computer Science or Programming Necessary

Overview

This new class is designed specifically for high school and junior high students who want to get a head start learning about what Computer Science and Programming are about. This course isn't about learning a specific programming tool or language. Rather, it is designed to help them strengthen their critical thinking and logical reasoning faculties, as well as give them the depth of understanding in fundamental concepts in Computer Science and programming, so that they could later on get started with any programming language or technology project.

A solid overview and key concepts in many areas of Computer Science are covered by this course, including Big Ideas in Science and Engineering (Real-World Modeling, Physics Simulations, From Model to Implementation, Reverse Engineering and Tinkering), Computer Science and Math Theory (Lists, Sets, Data Structures such as Dictionaries, Trees, Graphs, Algorithms such as Shortest Path), Programming Languages (Functions, Object-Oriented Programming), Artificial Intelligence (Propositional Logic), and Networking (Internet Protocols), and more.

I teach this class to some Living Wisdom School high school students in Nevada City, CA, as an alternate Math course.

This is a 15-week workshop course. Each class (week)'s lecture takes about 90-120 min. on average. Each class includes some lecture with slides, but the majority of the time the students will be working on programming or design exercises on their own computer. After each exercise the students can resume the lecture video to check their work against the teacher's.

The majority of the exercises included in each class are done in Snap. the programming tool from UC-Berkeley. Students can share their work and view programs done by other students around the world.

Perquisites and Requirements

  • No Prior Knowledge or Experience in Programming Needed
  • Exercises Only Require a Computer with Internet Access

Sections

  • Intro: Introduction to this workshop series
  • Week 1: Lists, Sets
  • Week 2: A Snappy Snap. Primer
  • Week 3: Concurrent and Event-Based Programming
  • Week 4: Revising the List Example: Under the Hood
  • Week 5: Modeling, Design, Implementation: Traffic Light, ATM
  • Week 6: Implementing the Traffic Light Simulation
  • Week 7: Functions
  • Week 8: Binary Search Trees
  • Week 9: Values, Types, Dictionaries
  • Week 10: Graphs, An Algorithm
  • Week 11: Implementing a Graph Algorithm
  • Week 12: Propositional Logic, "Have I Lied?" Game
  • Week 13: State Machines
  • Week 14: Internet Protocols
  • Outro: Next Steps
Enroll now

What's inside

Learning objectives

  • In-depth understanding of the fundamental ideas and concepts in computer science and programming
  • An overview and solid background in major areas of computer science
  • Learning programming in snap! programming tool from uc-berkeley
  • Learning programming in scratch programming tool from mit
  • Background knowledge and experience to start learning new programming languages
  • Improved ability in critical thinking, logical reasoning, modeling, design, planning & implementation

Syllabus

Introduction
  • What's This Course
  • Overview of Covered Topics
  • Snap! Programming Intro
  • Course Format
  • Prerequisites and Requirements
  • Teacher Background
Read more
Class 1: Lists, Sets
  • Lists
  • Sets
  • First Looks at Snap!
Class 2: A Snappy Snap! Primer
Class 2: A Note before Starting Snap!
  • Making a New Sprite
  • Saving Your Work
  • Adding Behavior to Your Sprite
  • Prototypes
  • Variables
  • Control
  • Exploring Time!
Class 3: Concurrent and Event-Based Programming
  • Concurrent Programming
  • Event-Based Programming
Class 4: Revising the List Example: Under the Hood
  • List Variable in Snap!
  • Understanding the List Example's Implementation
Class 5: Modeling, Design, Implementation: Traffic Light, ATM
  • Modeling
  • Brainstorming: Traffic Light Simulation
  • Implementation: ATM
  • Implementation: ATM
Class 6: Implementing the Traffic Light Simulation
  • Centering
  • Globals vs. Instance Variables
  • Implementing the Traffic Light Simulation
    • Intro






  • Implementing the Traffic Light Simulation
    • Exercise 1


  • Implementing the Traffic Light Simulation
    • Exercise 1 (Cont.)
    • Exercise 2
  • Implementing the Traffic Light Simulation
    • Exercise 3
    • Exercise 4
  • Closing
Class 7: Functions
  • Centering
  • Variable Types Review
  • Snap Blocks
  • Functions
  • Abstractions
Class 8: Binary Search Trees
  • Centering
  • Trees
  • Binary Trees
  • Binary Search Trees
  • Exercise: Binary Search Tree
  • Exercise: Binary Search Tree (Cont.)
Class 9: Values, Types, Dictionaries
  • Centering
  • Values and Types
  • Dictionaries
  • Exercise: Implement a Dictionary
Class 10: Graphs, An Algorithm
  • Graphs
  • Shortest-Path Algorithm
  • Shortest-Path Algorithm (Cont.)
Class 11: Implementing a Graph Algorithm
  • Graph Program Intro
  • Implementing Shortest-Path Algorithm
  • Implementing Shortest-Path Algorithm
Class 12: Propositional Logic, "Have I Lied?" Game
  • "Have I Lied?" Game
  • Propositional Logic
    • OR
    • AND
    • NOT
    • IF
    • De Morgan's Laws
Class 13: State Machines
  • Modeling a Vending Machine
  • Intro to State Machines
  • Vending Machine as a State Machine
  • Exercise: Traffic Light State Machine
  • Exercise: ATM State Machine
Class 14: Internet Protocols
  • How the Internet Works
  • Internet Protocol (IP)
  • Transmission Control Protocol (TCP)
  • TCP under Various Scenarios
Outro: Next Steps
  • Where to Go from Here
  • Links to Suggested Classes, Topics, Organizations, Languages
  • Closing

Save this course

Save High School Computer Science and Programming Intro Workshop to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in High School Computer Science and Programming Intro Workshop with these activities:
Review Basic Math Concepts
Strengthen foundational math skills to better understand the logic and algorithms covered in the course.
Browse courses on Algebra
Show steps
  • Review arithmetic operations (addition, subtraction, multiplication, division).
  • Practice solving simple algebraic equations.
  • Familiarize yourself with basic geometric concepts.
Read 'But How Do It Know?'
Gain a deeper understanding of how computers work at a fundamental level.
Show steps
  • Obtain a copy of 'But How Do It Know?'.
  • Read the book, focusing on chapters related to basic computer architecture and logic gates.
  • Take notes on key concepts and definitions.
Create a Simple Calculator in Snap!
Practice using Snap! to implement basic programming concepts and build a functional application.
Show steps
  • Design the user interface for the calculator in Snap!.
  • Implement the arithmetic operations (addition, subtraction, multiplication, division) using Snap! blocks.
  • Add error handling to prevent division by zero or invalid input.
  • Test the calculator thoroughly to ensure it functions correctly.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Explain Propositional Logic
Solidify understanding of propositional logic by creating a clear and concise explanation for others.
Show steps
  • Review the course materials on propositional logic.
  • Create a short video or presentation explaining the basic concepts of propositional logic (OR, AND, NOT, IF).
  • Provide examples to illustrate each concept.
Read 'Algorithms to Live By'
Explore the real-world applications of algorithms and improve problem-solving skills.
Show steps
  • Obtain a copy of 'Algorithms to Live By'.
  • Read the book, focusing on chapters related to search algorithms, sorting algorithms, and decision-making.
  • Reflect on how these algorithms can be applied to real-life situations.
Explore Advanced Snap! Features
Expand your knowledge of Snap! by exploring advanced features and techniques through online tutorials.
Show steps
  • Search for online tutorials on advanced Snap! features (e.g., custom blocks, recursion, higher-order functions).
  • Follow the tutorials and experiment with the new features in Snap!.
  • Create a small project that utilizes one or more of the advanced features.
Help Others with Snap!
Reinforce your understanding of Snap! by helping other students learn the tool.
Show steps
  • Join online forums or communities related to Snap!.
  • Answer questions from other students who are learning Snap!.
  • Share your projects and provide feedback to others.

Career center

Learners who complete High School Computer Science and Programming Intro Workshop will develop knowledge and skills that may be useful to these careers:
Computer Science Teacher
A computer science teacher educates students on computer science principles, programming, and related topics. This course is directly relevant to this career, as it covers fundamental concepts in computer science and programming. The course's design for high school and junior high students makes it even more applicable. Further, the teaching methods, such as the use of the Snap! programming tool and the emphasis on exercises, provide valuable insights into effective computer science education.
Software Engineer
A software engineer designs, develops, tests, and evaluates software systems and applications. This course may be useful for aspiring software engineers because it introduces fundamental concepts such as data structures like trees and graphs, algorithms, and object oriented programming. Further, it guides students through real world modeling and implementation, which is critical for the role of software engineer. The course's use of Snap! programming tool introduces learners to the basics of programming in a user friendly environment.
Game Developer
A game developer is responsible for designing and coding video games for various platforms, including consoles, PCs, and mobile devices. This course may be useful because it covers fundamental programming concepts, such as event based programming, concurrent programming, and state machines. Furthermore, the course touches on physics simulations, and graphics, which are relevant to game development. Because this course uses the Snap! programming tool, it offers a gentle introduction to the basics of game programming.
Web Developer
A web developer is responsible for coding, designing, and modifying websites, from layout to function, according to a client's specifications. This course helps build a foundation for a career as a web developer because it covers internet protocols, which are essential for understanding how the internet works. The course also introduces the fundamentals of programming, like variables and abstractions, that are necessary for success. Knowledge of data structures like lists and dictionaries, which are covered in this course, may also be helpful.
Artificial Intelligence Engineer
An artificial intelligence engineer designs and develops AI models and systems, requiring a strong background in mathematics, computer science, and software engineering; this typically requires an advanced degree. This course provides an introduction to propositional logic, a core concept in AI. Further, the course covers algorithms and data structures, which are also relevant to AI development. A student who wishes to enter the field of artificial intelligence may find this course a beneficial introduction to the field.
Mobile App Developer
A mobile app developer creates applications for mobile devices, such as smartphones and tablets. This course may be useful as it provides an introduction to programming concepts, including event based programming, object oriented programming, and functions. Learning these concepts using the Snap! programming tool offers a gentle introduction to programming, which helps students develop their ability to design and implement applications or mobile apps. This will help prepare learners for more advanced programming languages used in mobile development.
Data Scientist
A data scientist analyzes large amounts of data to identify trends, develop insights, and create predictive models to help organizations make better decisions. While this role typically requires an advanced degree, this course provides a good starting point. It covers algorithms, data structures, and modeling which are important for data analysis. Furthermore, the course's emphasis on critical thinking and logical reasoning may be useful for developing the problem-solving skills needed for success as a data scientist.
Robotics Engineer
A robotics engineer designs, builds, tests, and maintains robots and robotic systems. This course, while basic, may be useful because it covers topics such as modeling, design, and implementation, all of which are relevant to robotics. It also introduces students to state machines, which are used in robotics to control the behavior of robots. A student wishing to enter the field of robotics may find that this course provides a glimpse into the fundamental concepts in robotics.
Cybersecurity Analyst
A cybersecurity analyst protects computer systems and networks from cyber threats. This course may be useful because it introduces networking concepts, including internet protocols. It also helps build critical thinking and logical reasoning skills, which are important for identifying and mitigating security risks. In addition, the course touches on reverse engineering, which may also be applicable to cybersecurity. All of these concepts would introduce the role of cybersecurity analyst.
Database Administrator
A database administrator manages and maintains databases to ensure data is secure, available, and performs efficiently. This course may be useful for learning about data structures such as trees, graphs, and dictionaries which form the basis of database management. It also discusses various algorithms that help in effective data management. The work with lists and sets in Snap! may also prove helpful when managing relational databases. Overall, this course may be useful for those considering the role of database administrator.
Quality Assurance Tester
A quality assurance tester evaluates software and systems to identify defects and ensure they meet quality standards. This course may be useful because it introduces testing methodologies and the importance of thorough evaluation. Further, the course's emphasis on logical reasoning and critical thinking may be helpful for designing effective test cases and identifying potential issues. All of these concepts are relevant to the work done by a quality assurance tester.
IT Support Specialist
An IT support specialist provides technical assistance and support to computer users, troubleshooting hardware and software issues. This course may be useful for learning about fundamental computer science concepts, such as internet protocols and data structures. Furthermore, the course helps develop problem solving skills, which are essential for troubleshooting technical issues. This background might prove to be helpful for understanding IT systems and providing effective support as an IT support specialist.
Instructional Designer
An instructional designer creates learning materials and experiences, often incorporating technology to enhance the learning process. This course may be useful for gaining insights into how computer science concepts are taught, particularly to younger students. The course's use of the Snap! programming tool and its emphasis on hands-on exercises provide valuable perspectives on effective instructional strategies. Therefore, this course may be useful preparation for the work of an instructional designer.
Technical Writer
A technical writer creates documentation for software, hardware, and other technical products. This course may be useful for developing a foundational understanding of computer science concepts and terminology. Exposure to various programming concepts, such as functions and object oriented programming, allows a technical writer to better communicate with developers and engineers. This can ultimately help them create clear and accurate documentation. By taking this course, one might be able to take a first step toward becoming a technical writer.
Technology Consultant
A technology consultant advises organizations on how to use technology to meet their business goals. While this role often necessitates a deep expertise typically gained with advanced education, this broad introductory course touches upon a variety of fundamental topics that can be valuable. It introduces areas like networking, algorithms and data structures, all of which could appear in a technology consultant role. The exposure to modeling can also be helpful. All in all, this workshop may be useful for those considering a role as technology consultant.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in High School Computer Science and Programming Intro Workshop.
Provides a gentle introduction to the inner workings of computers, explaining fundamental concepts in an accessible way. It's particularly useful for students with no prior computer science background. The book helps build a strong foundation for understanding the more advanced topics covered in the workshop. It is more valuable as additional reading to provide background knowledge.
Explores how computer science algorithms can be applied to everyday decision-making. While not directly related to programming syntax, it provides valuable insights into algorithmic thinking and problem-solving. It is more valuable as additional reading to provide background knowledge. It can help students appreciate the broader applications of computer science concepts.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser