CS Courses @ NCHS

Intermediate Data Program 

Application information:

If you want to take Intermediate Data Programing (UW CSE 163), you need to apply. All students, even those at NCHS, need to fill out the Program Interest Form is here (Due by March 22, 2024).

For more information on this course, just continue reading...

Videos to watch

Watch the video, Computer Science Options at NCHS,  to get a description of the six CS courses at North Creek High School.  After that, there are some videos on individual classes.  Below are sections to hopefully answer all your questions.

Some of the information in this Options video is incorrect. Please see the information below for the latest information on teachers, length, etc.

The Difficulty and Homework Load columns use a relative value from 1-5 where 1 means it is the easiest of this set of classes. And, of course, 5 means it is the hardest of these six classes. This table is discussed in the video shown above.

Overview

If you were to take all six courses, this list illustrates one recommended order in which to take them. However, you are not required to take them in this order.  For example, you may elect to take AP CS A first and then AP CS Principles and never take #1 or #2. Please watch the video for a full explanation of possible paths through Computer Sciences courses. 

REcommendations

Freshman:  I recommend you take Introduction to CS (#1 above). If you have some programming experience, or are particularly strong in math, and you are looking for a challenge, AP Computer Science Principles (#3 above) would be a good, yet challenging class to start with. If you want to steer clear of programming and find an outlet for your artistic layouts, go for Web Design. For the exceptional student, Mr. Stride may give his permission to select freshman to take AP CS A after a consultation.

No Experience: If you have not ever done any programming, your first course really depends on your level of math, your time availability, and your interest in solving puzzles. Generally, if you're good at math and solving puzzles, you can choose to start with Intro to CS (#1 above) or either of the more difficult AP courses (#3 or #4 above). If you're the average math student, I recommend starting with Intro to CS and Web Design (#1 & #2 above) which are fun and accessible to all.

Strong but Unsure: If you aren't sure where you belong because you are an AP quality student, but you're not so sure you're ready to do lots of programming, then you should start with AP CS Principles (#3 above).

Lots of Experience: The core of the Computer Science curriculum is AP Computer Science A (#4 above). There have been some seriously experienced programmers take this course and they still learn a lot. Once you complete this course (or an equivalent), you 're ready for your reward: Advanced Programming Topics (#5 above). In Adv Topics you'll get to exposure to real world programming experiences in a low stress, group environment using industry tools such as GitHub and Eclipse.  You'll discover advanced programming techniques (e.g. Lambda Expressions) as you apply data structures and algorithms to build  fun applications such as an Artificial Intelligent, graphical version of Tic Tac Toe. 

supplemental Information

Below is some supplemental information to augment what one would find in the course catalog.

INTRODUCTION TO COMPUTER SCIENCE PRINCIPLES

This introductory course offers students who are comfortable with math a hands-on learning approach to building creative projects and learning about the science of computers that surrounds us every day. Students create classic arcade style games such as Pong, Flappy Bird, Frogger, Pit Fall, Pac-Man and Asteroids. The course is far more than just a fun, collaborative environment for learning to program graphical and engaging games in Snap (a block-based programming language). The class is based on the UC Berkeley CS10 course and gently introduces students to game design, algorithms, procedural decomposition, object oriented design, concurrency, agile development methodologies, project management, refactoring and optimization. 

Supplemental Information

This course is based on UC Berkeley CS10 and is an introduction to programming for students who have completed Algebra I, are comfortable with math, and looking for an opportunity to build creative projects. We will complete a number of interesting and challenging projects to demonstrate that programming provides a powerful set of tools for creative expression

We will be using the freely available Snap! visual programming language, an easy-to-learn language that allows for easy development of fun storytelling and game programs. The problem-solving skills students gain in this course will be helpful no matter what field they choose to pursue. The experience of writing programs will make them more savvy software users.

The course is the most introductory of the computer science offerings and would be many students' first course in computer science. Although the material is for the beginner, the projects are open-ended allowing students to exercise Snap's more advance features such as concurrency, recursion, cloning, and custom block creation. 

AP COMPUTER SCIENCE PRINCIPLES 

In this course, students will learn the fundamentals of computing – including problem solving, working with data, understanding the internet, cybersecurity, and programming. Students completing this course should leave with a broadened understanding of computer science for use in diverse majors and careers. Those wanting to earn AP credit will submit two “through-course performance tasks” to the College Board for grading, and will take a multiple-choice end-of-year exam. This course is not a prerequisite for AP Computer Science A, but AP Computer Science A is the logical follow-up class for students inspired to study computer science more deeply after completing this class.

Supplemental Information

This course is for students who have no computer programming experience; there are no computer science prerequisites to the course. However, it is an AP level course where students are expected to have a sound foundation of mathematical reasoning and written communication. The material covers a wide variety of concepts and potentially multiple computer languages that are quite different from one another. The course does not engage in extensive programming in any single language, but attempts to convey broader knowledge and concepts found across computer technologies. 

AP COMPUTER SCIENCE A 

This AP and College in the High School course introduces students to the fundamentals of computer science by teaching Java, an object oriented programming language.  No prior programming experience is necessary to enroll, but the course is fast-paced and meant to replicate a college introductory programming class (CSE 142 at the UW). Students are challenged to solve difficult problems and to develop object oriented code. Students will learn topics that include procedural programming (methods, parameters, return values), basic control structures (sequence, if/else, loops), file processing, collections, object-oriented design, and recursion. This course prepares students to take the AP CS A Exam in May. 

Supplemental Information

Advanced Placement Computer Science is rigorous and fast-paced meant to replicate a college introductory programming class.  The prerequisites are successful completion of Algebra II course, strong reading skills and a willingness to work hard! 

This course will cover fundamentals of programming syntax and methodology using the Java programming language.  Java is a good choice because it has all the features expected of a modern language while having fewer subtleties than, for example, C++.  Java is also one of the languages in the highest demand in industry.

ADVANCED PROGRAMMING TOPICS 1 & 2

This course provides an opportunity for highly motivated students who have completed a year-long college-level Computer Science course (AP Computer Science A) to continue their studies in this field. In this course you will learn about advanced data structures and algorithms, while expanding your knowledge of object-oriented programming. As the year progresses each student will be given increased flexibility to focus more deeply on the topics and technologies that catch and hold their interest.

Supplemental Information

This course will allow students who have completed the AP computer science course to expand their programming knowledge in a fun group environment. This course has evolved beyond its original design (student-driven, independent projects) into a highly structured class on significant projects. Lessons on software development processes, project design & management, and other topics will assist in completing the projects as well as advance their programming skills. Project design process will be taught to provide a method of better refining ideas and creating effective and useful projects. Students taking this course will be expected to be self-directed and ambitious. These projects will allow students to experience the satisfaction in creating relevant projects of their own design to demonstrate the value and power of computer science. 

Intermediate Data Programming

Because the students will rapidly learn Python from the ground up, students should enjoy programming and have demonstrated success in AP CS A (or equivalent). Since most high schools won't have enough students ready for this class, Intermediate Data Programming is being offered as a "satellite course," meaning that students from any high school can enroll. The class will be taught first period at North Creek High School by Mr. Stride.