Course Announcements

Due next week (11:59 PM):

  • VQ2 due Monday

  • VQ3 due Wednesday

  • CL1 due next Friday

  • Pre-course assessments (two surveys) due next Sunday

Notes:

  • I’m extending VQ1 due date to Monday as well. It’s the first one. Everyone’s just getting back into the swing.

  • Coding Labs will be released on Fridays and due the following Friday.

  • This course redesign will work best if you keep up with the videos and think/learn while watching them. The quizzes are there to keep you on track…but don’t contain all we expect you to know.

  • Labs and office hours begin next week

  • Sign up for your exams if you haven’t already: https://us.prairietest.com/pt (practice exam is totally optional)

Tooling#

Open In Colab

  • Jupyter Notebooks (& Google Colab)

  • PrairieLearn

  • Academic Integrity

This notebook will guide through the tools you will need for class materials and assignments, and how to get them.

Jupyter Notebooks#

  • Markdown

  • code cells

Google Colab is Google’s version of a jupyter notebook.

Jupyter notebooks are a way to combine executable code, code outputs, and text into one connected file.
The official documentation from project Jupyter is available here and they also have some example notebooks here .
For more useful information, check out Jupyter Notebooks tips & tricks , and more information on how notebooks work.

Cells#

The main organizational structure of the notebook are cells.

Cells are an independent ‘unit’. When you click into a cell, you can ‘run’ it by clicking Shift + Enter, or by pressing the play (Run) button above.

Cells come in different types for writing different things - mainly, text or code.

Markdown Cells#

Cells, can be markdown (text), like this one.

A brief note about Markdown. It’s a way to specify all formatting within the text itself.

For example, italicized text can be specified with an underscore or single asterisks.

Bold text requires two underccores or two asterisks.

Markdown Headers#

Headers are specified with a pound sign#

The more pound signs, the smaller the header#

But it’s still larger#

than just plain text.

Lists are also possible:

  • item 1

  • item 2

  • item 3

  1. numbered item

  2. item 2

  3. item 3

Code Cells#

Whenever you’re writing code, you’ll want to be sure the cell is set to be a code cell

# Cell can also be code.
a = 1
b = 2
# Cells can also have output, that gets printed out below the cell.
c = a - b
print(c)
# If you execute a cell with just a variable name in it, it will also get printed
c

Running Cells#

  • The numbers in the square brackets to the left of a cell show which cells have been run, and in what order.

    • An asterisk (*) means that the cell is currently running

    • You do not need to run cells in order! This is useful for flexibly testing and developing code.

Activity time: Tooling#

Complete all questions in this Google Form (https://forms.gle/2rtinhdpuQtBkppE9) and then click submit.

You are encouraged to:

  1. Talk with your neighbor

  2. Try the questions out in your notebok to check your understanding

If you have questions, I’m happy to come over as we work on this!

Accessing Documentation#

Jupyter has useful shortcuts. Add a single ? after a function or class get a window with the documentation, or a double ?? to pull up the source code.
# For example, execute this cell to see the documentation for the 'abs'
abs?

Autocomplete#

Jupyter also has tab complete capacities, which can autocomplete what you are typing, and/or be used to explore what code is available. (Note: Some of this functionality is limited on datahub.)
# Move your cursor to the end of the line, press tab, and a drop menu will appear showing all possible completions
ra
# If there is only one option, tab-complete will auto-complete what you are typing
range

PrairieLearn#

  • For Assessment: VQs (video quizzes), CLs (coding labs), As (assignments), and exams (E1, E2, Final)

    • Save & Grade -> will give you immediate feedback on correctness

    • Unlimited attempts for full credit: Coding labs

    • (typically) Multiple attempts for credit (diminishing): VQs, As, Exams

  • If you save but do NOT click Save & Grade, it will grade once assessment closes.

    • Sometimes there will be Jupyter notebooks:

      • do not change file names

      • MUST save notebook AND click save on PL

      • print() statements encouraged

[demo]

  • PL

  • report an issue

  • Workspaces (Notebooks) in PL

Academic Integrity#

We’ve had some issues in the past, so we’re trying to be incredibly explicit this quarter so that we’re all on the same page. (And, because this differs from some other courses.)

Correction: It was for one exam; it was not constant. And it was 6/100 (which is 6% of the class!)

I came into this class knowing absolutely nothing about coding. Being in this position, I have made it my goal to go above and beyond in learning about programming languages that I am unfamiliar with because I personally like a challenge and I love learning new things.

Because coding does not come naturally to me, I plan WAY ahead of time as to when I need to sit down, uninterrupted, to really learn, make mistakes, and test out the code I write in assignments. For example, I plan DAYS ahead of time as to when I need to sit down and complete assignments. Again, because coding does not come naturally to me, I spend on average 2 hours more than the median hours/time spent listed. Not only do I spend hours completing assignments to the best of my ability, but I make sure to test out EACH AND EVERY PIECE of code I wrote in these assignments to make sure my code is “spitting out” what I am expecting, and to show you and the TAs what I was trying to do just in case I get something wrong (because showing work for some points is better than showing no work for 0 points, you know?)

Each student has their method, and planning out WHEN to work and HOW LONG to work on assignments is my method; I just think it is a shame that students resort to cheating when things get tough or they are too lazy to actually learn, because again, that is unfair to me as a student who dedicates time and energy to every assignment in this class.

- Former COGS 18 Student

The most important reminder: you must have written, understand, and be able to explain any code you turn in as your own.

When can you work with others or use outside resources (i.e. ChatGPT) in COGS 18?

Everything other than exams.

Working with others is different than copying from others. It is never acceptable to just ask someone for their answers or their code.

On Coding Labs & Assignments, it is OK to ask one another questions about what you’re working on. It is OK to share screens and talk through your answers.

If you find yourself copying + pasting someone else’s code (from a friend or from the Internet)…you’re probably making a mistake.

Exams assess your understanding after you’ve had plenty of practice (in lecture, on coding labs, and on assignments).

It’s your time to show off what you know.

Part of your first Coding Lab will help to make this all as clear as possible!