> For the complete documentation index, see [llms.txt](https://codingcrafter.gitbook.io/intro-to-programming-for-non-majors-cs-1004/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codingcrafter.gitbook.io/intro-to-programming-for-non-majors-cs-1004/introduction-to-programming-for-non-majors.md).

# Introduction to Programming for Non-Majors

a computational media approach | Gillian Smith | CS 1004 | WPI

These course materials are for CS 1004: Introduction to Programming for Non-Majors, taught at Worcester Polytechnic Institute. This course is taught using [p5.js](https://p5js.org), a free and open-source Javascript library for creative coding that is based on the [Processing](https://processing.org) project. The course is heavily project-based, and uses a form of [ungrading assessment model ](/intro-to-programming-for-non-majors-cs-1004/ungrading-self-reflection-and-self-evaluation.md)that relies heavily on [self-reflection and self-evaluation](/intro-to-programming-for-non-majors-cs-1004/ungrading-templates/initial-reflection-and-goal-setting.md).&#x20;

Students complete [Skills Labs](/intro-to-programming-for-non-majors-cs-1004/skills-labs/lab-1-three-points-in-space.md) that offer some structure for reinforcing core concepts, but still give significant room for creative expression and experimentation:

* [Lab 1: Three Points in Space](/intro-to-programming-for-non-majors-cs-1004/skills-labs/lab-1-three-points-in-space.md) - getting started with p5.js, procedural code execution, calling functions
* [Lab 2: Generative Art](/intro-to-programming-for-non-majors-cs-1004/skills-labs/lab-2-generative-art.md) - variables, control flow (if/else, for loops), user input (keyboard, mouse)
* [Lab 3: Image Processing](/intro-to-programming-for-non-majors-cs-1004/skills-labs/lab-3-image-processing.md) - loading images, arrays, pixels, considering efficiency/complexity
* [Lab 4: Data Visualization](/intro-to-programming-for-non-majors-cs-1004/skills-labs/lab-4-data-visualization.md) - strings, loading data from a file, creating/modifying simple objects

Students also work in groups to complete term-long projects (approximately 5 weeks of programming time). These happen in parallel with the labs; some students will learn concepts from labs early, others late. The [Project Guides](/intro-to-programming-for-non-majors-cs-1004/project-guides/finding-inspiration.md) section includes an outline of how projects are structured each week.

* [Finding Inspiration](/intro-to-programming-for-non-majors-cs-1004/project-guides/finding-inspiration.md) - based upon declared areas of interest, students seek out examples of programming used in that domain
* [Project Goal Setting](/intro-to-programming-for-non-majors-cs-1004/project-guides/project-goals.md) - once teams have been formed, students get to know each other, create asset maps to identify strengths and areas to learn, and define an initial project goal and plan for first week
* [Project Sprints](/intro-to-programming-for-non-majors-cs-1004/project-guides/project-sprint-template.md) - each week, students report what they have completed, what they did not complete, and what they plan to do for next week. They also identify questions they have or problems they are running into, for course staff to review and offer assistance.
* [Final Project Milestone](/intro-to-programming-for-non-majors-cs-1004/project-guides/final-submission.md) - students submit their final working project and present it in class, as well as a group-written postmortem on the project

There are a number of [class activities](/intro-to-programming-for-non-majors-cs-1004/class-activities/keepy-uppy.md) that introduce core concepts. Some are documented in this repository; most are improvised.&#x20;

WPI teaches undergraduate courses on [7 week terms](https://www.wpi.edu/project-based-learning/wpi-plan). It's a fast pace! Each week has roughly:

* 2 hours of in-class activities focused on the concepts needed for the next lab, where they program alongside lecture, with frequent breaks for checking progress, answering questions, or challenging them to do more
* 2 hours of time to work on projects
* 1 hour of time to work on skills labs (with TA, in 20-person lab setting)
* up to 10 hours of students working outside of class

<figure><img src="https://i.creativecommons.org/l/by-nc/4.0/88x31.png" alt=""><figcaption><p>All course materials included on this site are free and open for use under the Creative Commons Attribution-NonCommercial 4.0 International License.</p></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://codingcrafter.gitbook.io/intro-to-programming-for-non-majors-cs-1004/introduction-to-programming-for-non-majors.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
