Getting Started with Computer Science

This page introduces information on how to approach introductory computer science courses and finding computer science-related programs at UW Bothell. For additional help, contact your current Pre-Major or major advisor, or the School of STEM advising at

Page navigation:

Assessing your programming experience

Even though Intro Programming I (CSS 142 + CSSSKL 142 lab) has no prerequisites, students often start the course with different levels of experience. Students find it helpful to learn with others of a similar skill level, so we often designate one or more sections of CSS 142 and CSSSKL 142 to be for students with limited programming experience.

Answer the questions below provide a self-assessment to help determine whether you have limited programming experience.

Question 1:

Have you ever written a program (regardless of length) in a text-based programming language (e.g., Java, C++, C#, Python, etc.)?

If you answered “no,” you probably have limited programming experience. If you answered “yes,” please continue to the next question.

Question 2:

Which of the following topics do you understand well enough to write a short program (under 50 lines) using the concept?

  • Variables
  • Expressions
  • If statements
  • Loops
  • Nested loops
  • Arrays
  • Classes

If you answered “no” to 4 or more of the above topics, you may have limited programming experience.

The CSS Division offers a variety of introductory computing courses for Pre-Majors as well as courses for students pursuing non-CSS majors. Please see the Where to Start flowchart, or read below, to help you choose the right first computing course for you.

Introductory courses

CSS 101/BIS 111: Digital Thinking

Explores computational thinking and its societal impacts, computing history, ethical considerations, computer usage, the internet; and how computers solve problems, represent data, and search for information.

  • Skills/concepts: Computational problem solving, understanding computing impacts, ethical issues in technology.
  • Tools/languages: Processing (a Java development environment)

CSS 107: Introduction to Programming Through Animated Storytelling

Start your programming
experience with virtual
worlds, creation of characters, games,
short stories, and 3D motion. Teaches object-oriented programming via storytelling and animation, incorporating visual storytelling techniques and programming fundamentals.

  • Skills/concepts: Algorithmic thinking, loops, variables, IDE use, visual storytelling, video creation, scriptwriting.
  • Tools/languages: Scratch

CSS 110: Introduction to Cybersecurity

Provides a foundational understanding of the digital security landscape for those without prior technical experience, introducing: privacy, cryptography, social and ethical issues, hacking, networking, legal aspects, and digital forensics.

  • Skills/concepts: Cybersecurity principles, privacy laws, encryption, digital forensics, password management.
  • Tools/languages: N/A.

CSS 112: Introduction to Programming for Scientific Applications

Focuses on programming fundamentals using Python for scientific applications, enhancing problem-solving skills in computational fields.

  • Skills/concepts: Control structures, data types, functions, software engineering basics, scientific computing applications.
  • Tools/languages: Python
  • Textbooks/resources: “A Gentle Introduction to Python Programming for Scientists and Engineers” by Johnny Lin.

CSS 132: Computer Programming for Engineers I

Introduces programming with an emphasis on engineering applications, covering fundamentals, computer organization, and algorithmic thinking.

  • Skills/concepts: Programming fundamentals, algorithmic thinking, software engineering concepts.
  • Tools/languages: C++;

CSS 142: Computer Programming I

Introduces general programming fundamentals within various contexts. Every quarter, there are designated offerings of this course specifically designed for students with limited programming experience.

  • Skills/concepts: Problem-solving, design, programming fundamentals, software engineering, societal impacts of computing.
  • Tools/languages: Java
  • Textbooks/resources: “Absolute Java” by Walter Savitch

Programs to consider

Many programs at UW Bothell can help you develop computer science skills. Consider the following programs to see what the best fit is for you.

Undergraduate programs

Graduate programs