Introduction to Computer Science YMT113 · Fall 2026 Assoc. Prof. Ferhat Uçar

>_ Lab 1 · Week 2 · Monday, September 28, 2026 · Scratch

Hello, Scratch

Make your own copy of the lab on GitHub, rebuild the meow program with a custom block, build a small Scratch project of your own, and answer seven questions about bits. No C yet.

week
2 · Mon, Sep 28
due
Fri, Oct 2 · 23:59
points
10 (autograded)
time
90 min + finish at home
files you edit
README.mdanswers.txtpseudocode.txt

Goal

Two things happen today. You run the weekly loop for the first time: get your own copy of the lab on GitHub, open it in VS Code in your browser, run the checks, push, see the result. And you turn CS50 Week 0 into your own work: a warm-up in Scratch, a project of your own, and a few questions about bits and algorithms. Everything is on this page, in order. C starts next week.

Steps

1

Make your own private copy

⏱ 2 min
  1. Sign in to github.com. No account yet? Create one first (2 minutes; use your university email).
  2. Click the orange Create your copy button at the top of this page. It opens GitHub’s “Create a new repository” form, already set to the Lab 1 template.
  3. Fill in the form exactly like this:
FieldValue
Owneryour own username
Repository nameics-2026-lab01 (exactly this; the grader looks for this name)
VisibilityPrivate
  1. Click Create repository. You now have your-username/ics-2026-lab01.
2

Share it with the instructor

⏱ 1 min

In your new repository:

  1. Click Settings (top right of the repository page), then Collaborators in the left menu.
  2. Click Add people, type drferhatu, choose drferhatu and click Add to repository.

The instructor can only grade repositories shared with him. Your repository stays private: nobody else can see it.

3

Write your name in the README

⏱ 1 min

Still on the repository page, open README.md, click the pencil icon ✎ and fill in the two lines under Student:

- Name: Ada Lovelace
- Student ID: 23xxxxxxx

Click Commit changes… and then Commit changes. This is how your GitHub username is matched to you in the grade list.

4

Open it in Codespaces and run the checks once

⏱ 3 min

On your repository page:

  1. Click the green Code button.
  2. Choose the Codespaces tab.
  3. Click Create codespace on main.

A VS Code editor opens in your browser. The first start takes about a minute; watch the terminal at the bottom until it shows a prompt ending in $. In the file explorer on the left you see:

FileWhat it is
README.mdParts A and B: where your two Scratch links go
answers.txtPart C: seven short answers about bits
pseudocode.txtPart D: your algorithm in numbered steps
check.pythe friendly test runner
tests/the tests (grading uses the official copy, so editing them does not help)

In the terminal, run the checks before doing anything:

>_ terminal
$ python3 check.py:( Part A: README links your meow project
  no scratch.mit.edu/projects/ link after 'Meow:' in README.md (Share → Copy Link in Scratch)
:( Part B: README links your own project
...
0/7 checks passed

Every check is :( because nothing is done yet. Your job is to turn them all into :).

5

Part A · Warm-up: meow, with a custom block

⏱ 10 min

Rebuild the last version of the lecture’s meow program from memory, in a new Scratch project (sign in at scratch.mit.edu → Create):

  1. My Blocks → Make a Block, name it meow and give it a number input called n (tick Add an input · number or text).
  2. Define it: repeat n { play sound Meow until done; wait 1 seconds }.
  3. Main script: when green flag clicked → meow 3.

Click the flag: three meows, one second apart. Change 3 to 5 without touching the definition. That is abstraction working for you.

Then Share → Copy Link, open README.md in your codespace, and replace the placeholder after Meow: with your link:

Meow: https://scratch.mit.edu/projects/123456789/

Stuck? Load the lecture’s meow4.sb3 into Scratch (File → Load from your computer) and compare.

6

Part B · Your own project

⏱ 35 min

Build a small program of your own that has all of these:

  • at least one custom block (with or without an input);
  • at least one variable that changes while the program runs (a score, a counter, a countdown);
  • at least one loop (forever, repeat, or repeat until);
  • at least one condition (if … then, ideally with else);
  • at least one event besides the green flag (a key press, a sprite click, ask … and wait, or a broadcast).

Ideas: a cat that meows and counts every time you press space; a ball that bounces and scores when it touches a sprite; a three-question quiz that keeps score; a simplified Oscartime with your own sprites. Bigger is not better; working is better. The lecture’s projects are on the week 2 page if you want to open one and change it, but the submitted project must be your own build.

When it runs: Share → Copy Link, paste it after Project: in README.md, and write one or two sentences under it saying what the program does and which custom block, variable, loop, condition and event it uses. The checks look for the link and at least twenty words.

7

Part C · Bits and bytes

⏱ 15 min

Open answers.txt. Seven questions from the first half of the lecture: three numbers to write in binary, one binary number to read, two ASCII bytes to decode, and two facts. Write each answer after the = sign, nothing else on the line.

Do them on paper first with the place values 128 64 32 16 8 4 2 1, then check yourself with the bit widget on the week 2 page. The ASCII table is at asciitable.com; case matters.

>_ terminal
$ python3 check.py:) Part C: 13, 42 and 100 in binary (q1–q3)
:) Part C: 10101010 in decimal (q4) and the ASCII text 01001000 01101001 (q5)
:) Part C: values in a byte (q6) and binary-search steps for a billion (q7)
8

Part D · Pseudocode

⏱ 10 min

Open pseudocode.txt. Pick one of the three problems in the file and write your algorithm as numbered steps, the way we wrote the phone-book algorithm: at least six lines, at least one if, and at least one loop (go back to line N, repeat, while or until). Delete the example first; the checks refuse it.

Be precise enough for a robot that understands nothing. “Find the biggest” is not a step; “if this number is bigger than the one I remember, remember this one” is.

9

Submit

⏱ 1 min

Submitting = pushing your work to GitHub. Type these three lines in the terminal:

>_ terminal
$ git add -A$ git commit -m "Lab 1"$ git push

Prefer buttons? Use the Source Control icon on the left of VS Code: type a message, click Commit, then Sync Changes. (If you edited the files on github.com with the pencil, each Commit changes already is a push.)

Then check that it arrived:

  1. Open your repository on github.com. Your latest commit message (“Lab 1”) is shown at the top of the file list.
  2. Next to it, after about a minute, a ✅ (all checks passed) or ❌ (some failed) appears. Click it, then Details, to see the same :) / :( list as python3 check.py.

How to submit

Good to know:

  • What is graded. After the deadline the instructor runs the official tests on your last push, so changing the files in tests/ does not change your grade. python3 check.py shows you exactly what the grader will see. The two Scratch projects are also opened and looked at.
  • Late work. Pushes up to five days late are graded with 10% off per day, as in the syllabus. After that, nothing is accepted.
  • Time stamps. The deadline is checked against the time GitHub received your push, not the clock on your computer.
  • Working with others. Discuss ideas, not solutions. The project and the answers must be yours, and you must be able to explain them.

Explore: the notebook

The week 2 notebook draws a pixel-art smiley from a grid of numbers, converts your name to bytes, and counts binary-search steps for the whole world’s population. Open it in Colab; nothing to install, nothing graded.

Challenges (optional, not graded)

  1. Two sprites talking. Use broadcast so that when one sprite finishes, the other reacts.
  2. Level up. Add a second level to your project that starts when the score reaches 10.
  3. Binary on the stage. Make a sprite that asks for a number from 0 to 255 and says its 8 bits. (Hint: repeat 8 times; use mod 2 and division.)

Troubleshooting