The Evergreen State College is proud to offer the following upper division computer science programs during the academic school year 2023-2024.
flowchart LR
DSA(DSA 23au) ---> SOS(24wi)
These three programs form a sequence over three quarters, progressing from
- the basic principles of
- a scrappy startup experimenting with many products to resonate with users in the Purpose-Driven Web
- scaling a proven product to more users with more reliability and a bigger team of developers in Software Construction
This program is a joint effort among students and teaching staff as a Learning Organization. For software and computer science, that means we are producing code (and tests) as artifacts as we are learning them. The build status indicates whether our code currently compiles, and all tests are currently passing successfully. During the quarter, this build status will fluctuate but by the end it should stay green (passing).
Course Catalog: Data Structures and Algorithms
Abstract data types, automated problem-solving, and analyzing computing resources for medium-sized organizations. Data Structures and Algorithms help students understand and implement software systems ranging from tens of datapoints to millions and billions, what it means to scale and how to enable it, and also to apply tools of computational thinking to problems common in technical interviews.
Data Structures & Algorithms cover how data is organized and transformed usefully on a single machine, or in parallel across multiple machines coordinating over a network.
Course Catalog: Student-Originated Software
Modern products and services that delight and benefit our lives every day often begin at a web (or mobile) app and end with an experience for our users and customers that enacts a change we wish to see in the world. This model underlies the majority of tech startups or tech-enabled ventures today, who are focused on rapid, agile iteration; testing successively more and more refined prototypes with users; As a younger Facebook has said, "move fast and break things".
Building upon the foundation of DSA, we add the client-server architecture and the model-view-controller paradigm. The two major areas that govern These separate a backend, often involving databases, access control, and user data from a frontend, a user interface that focuses on visual effectiveness, aesthetics, and ease-of-interaction, that runs on user's devices.
There is a wealth of modern information available over the web from businesses and organizations through their Application Programming Interfaces (APIs). These interfaces allow new entrepreneurs and changemakers to combine, remix, and syndicate data in innovative ways to enable new web-based apps.
Course Catalog: Software Construction
As software products and their ventures mature, gain users, and become established in their fields, rapid iteration and a mismatch of past design decisions lead to overhead and tech debt. Continuing in the same startup mode creates perhaps as many problems as it solves, and this is where an entry-level software developer takes their first step on the path to being a software engineer.
We call this beginning stage, where we balance adding completely new functionality with streamlining and refactoring our existing software systems and processes. The image here is removing the shoe from your pebble, before you run a marathon.
- Requirements engineering and analysis
- Continuous integration (CI) and continuous deployment (CD)
- Testing pipelines, unit and integration testing
- Design patterns, object-oriented and functional