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.
Computer Science Options at NCHS (6:54) Get an overview of all the CS classes at NCHS to see which is right for you!
Introduction to Computer Science (7:28) Mr. Barber reveals how fun it can be to do block programming in Snap!
AP Computer Science Principles (8:38) An AP class to introduce you to many CS topics. (Mr. Barber)
AP Computer Science A (4:01) Describes who should take this course and what students learn.
Advanced Programming Topics (2:48) Shows why this really is the most fun CS class at NCHS.
Intermediate Data Programming (3:07) Presents what this Python class offers and who should take it.
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.
Introduction to Computer Science Principles: This semester-long course is taught by Mr. Barber and is for everyone, 9-12, those with and those without coding experience. Students will need to think logically, problem solve and do some math, which is why algebra I is a prerequisite. Homework is very light as we attempt to get all our work done in the classroom. We regularly work on labs that are instructive and self-paced. The teacher presentations are short and usually hands-on. There are four projects: Story Telling, Pong, Platform Game, and a final project of your choosing, all done in Snap (a block-based programming language taught at UC Berkeley). There is lots of room for creativity and collaboration. The programming language is deep and allows the advanced programming students to learn important concepts and methods. Yet, it is also very graphical in nature, allowing for the artistically inclined to express themselves with animation, sounds and drawings. Here is a video of projects created in Fall of 2018-19. This course is taught by: Ms. Ahuja.
Web Design: This semester-long course is for everyone and can be taken at anytime. No prior programming experience is necessary. The course focuses on building elegant, graphical and accessible webpages using HTML and CSS. There is little to no emphasis on programming in JavaScript. This course is taught by: Ms. Regith.
AP Computer Science Principles: This yearlong course is is taught by Mr. Barber. The course targets students in 10-12 grade, but 9th graders are welcome to take the course. The material follows the code.org curriculum and is intended to give students a broad understanding of computer technology as it touches on many different topics such as the internet, digital information, programming, and big data. There is some coding in JavaScript, but the coding work is introductory. This is an AP course, so there will be homework and the expectations are high, but this course is not as rigorous nor as difficult as AP CS A. This course is taught by: Mr. Barber.
AP Computer Science A: This yearlong course is the core of the Computer Science curriculum and is a great way to kickoff your journey into a Computer Science or related major. Students will spend the year learning to program in Java. Due to the workload and rigor of the class, 9th graders are discouraged from taking this course (although some freshman have completed the course with an A). Students should be prepared to do a lot of work, and be happily rewarded. Many students without any prior computer experience have discovered a passion for CS in this class. Prerequisite: Algebra II or AP CS P or Teacher approval. See student testimonials here. This class can fulfill a Math requirement. This course is taught by: Ms. Ahuja.
Advanced Topics I & II: The focus of this course is to have fun programming in groups! The stress is low, the homework is relatively light, yet the topics are advanced so only those who love to program should take this course. Students learn GUI, event handlers and event-driving programming, data structures, recursion, algorithms and the tools necessary to program introductory Artificial Intelligence. During the second semester students identify a meaningful and appropriate programming project where they will independently study & research topics that enable success in their project. Students must enroll for a full year. Students are required to have successfully completed AP Computer Science A before taking this course and need to be ready to demonstrate maturity by being self-driven and highly motivated. This course is taught by: Mr. Stride.
Intermediate Data Programming: This advanced, yearlong CiHS course will offer students the ability to get UW in the High School credit (4) as it follows the UW CSE 163 curriculum. It's a seriously tough course, so students should be ready to work. Juniors should consider taking Advanced Topics first to get more programming experience before taking this course. Students will spend the first part of the course learning Python very quickly--buckle up, kiddos! Python offers intrinsic support for loading, organizing and displaying data using a cornucopia of data structures and modules (lists, dictionaries, sets and data frames). Once students become dangerous with capability, they learn why Python can be slow when wielded improperly (e.g. code complexity & efficiency). Data is displayed and explored in various ways: tabular, textual, graphical, and geo-spatial. The class will use an ecosystem of data science tools including Jupyter Notebook and various data science libraries including scikit image, scikit learn, and Pandas which will be leveraged to execute data visualization, Machine Learning and data analysis. Yes, students will build Machine Learning Data Models. Prerequisites: AP CS A (or equivalent). Only students who meet this prerequisite will be permitted to take the course. Students MUST APPLY here (Due by March 22, 2024). This course is taught by: Mr. Stride.
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.