Lecture 0 Slides - Course Logistics

1 of 59

Welcome!

COMP_SCI 110

2 of 59

About Me - Dr. Connor Bain

Undergrad at the University of South Carolina in Computer Science, Math, and Music

MS/PhD from Northwestern University in Computer Science and Learning Sciences

I'm a Faculty Fellow at Willard Residential College

Other classes I teach:

CS 111 - Fundamentals of Computer Programming

CS 396 - Communicating Computer Science

CS 397 - CS Pedagogy: Short Course Design

My research focuses on the idea of computational literacy and integrating these ideas into existing high school curricula. My office is Tech Rm. L374

3 of 59

Course Staff

Co-Instructor: Anjali Agarwal

Graduate TA: Seva Suschevskiy

Undergraduate Peer Mentors:

Chibueze Anyachebelu

Andres Arencibia

Andre Avellar

Sarah Carley

Renato de Souza Cardoso

Zoryah Gray

Rebecca Gu

Alicia Li

Jacob Liang

Viktoriia Sokolenko

Yuka Sumi

Michelle Sun

Alyssa Shou

Kathleen Lee

4 of 59

The goal of this class is not to manufacture expert programmers. Our goal is to build your computational literacy–your ability to see the world as computable. We'll do this by learning how to reason about and design computer programs.

5 of 59

  • No showing off.
  • Ask questions.
  • Respect and help others.
  • Read carefully.
  • There's no such thing as a little program.

Course Tenets

This is a learning community

6 of 59

Lecture 0

What is programming? + Course Overview

7 of 59

big course ideas

8 of 59

Computation is a tool

Computation is a medium of expression

Computation is language for biology

Computation is language for art

Computation is language for psychology

Computation is language for neuroscience

Computation is a playground

9 of 59

Major course themes

  • Programming as com/position
    • Both in the sense of placing elements together
    • And of writing and communication
  • Computer Science as a psychological discipline
    • Humans are the scarcest resource in software development
  • Computer Science as a social discipline
    • Large programs are beyond the capacity of individuals
  • Computer Science as an aesthetic discipline
    • Aesthetics has functional consequences

10 of 59

Programming as com/position

  • Function composition
    • Linking outputs to inputs
  • Data composition
    • Primitives
    • Lists and records (tuples)
    • Inductive structures
  • Imperative composition
    • Sequencing changes in time
  • Composing code with data
    • Object-oriented programming
  • Interaction composition
    • Networks, events, and agents

11 of 59

12 of 59

13 of 59

14 of 59

15 of 59

16 of 59

17 of 59

18 of 59

19 of 59

20 of 59

Skill Building

  • Composing new programs
  • Debugging existing programs
  • Communicating about programs

21 of 59

1. composing programs

22 of 59

Computation is a language

23 of 59

24 of 59

25 of 59

2. debugging programs

26 of 59

27 of 59

28 of 59

29 of 59

3. communicating about programs

30 of 59

31 of 59

32 of 59

33 of 59

administrative stuff

34 of 59

Course Overview

  • Why should I take this course?
  • What am I going to learn?
  • How am I going to learn it?

35 of 59

Why should I take this course?

  • Computing is quickly becoming a crucial literacy
  • It's not just for computer scientists
  • The skill of programming is enabling (and often fun!)
  • You’ll gain a foundation that you can use to learn other computational skills:
    • Data analysis
    • Short programs to manage easily automatable tasks
    • Creative computing (generate music; art; video games; etc.)
    • And more!

36 of 59

How is this course different from majors track?

CS 110Recommended for people who are:

  • Interested in higher-level computing applications (CS+X)
  • Considering majoring in CS but haven’t taken a college-level or Advanced Placement CS course and aren’t interested (right now) in the major or minor

CS Majors "Programming" Progression

  • CS 111: Functional Programming / Intro to CS
  • CS 150: Programming 1.5
  • CS 211: Object-Oriented Programming
  • CS 213: Intro to Computer Systems (low-level computer constructs)
  • CS 214: Data Structures and Algorithms

37 of 59

What if I’m interested in CS but I don’t want to major in it?

There are several other formal options for you to consider:

And there are other informal options to consider as well:

38 of 59

What am I going to learn?

  • The fundamental building blocks of programming
  • Examples of programming practices
  • Some computing applications and contexts

39 of 59

How am I going to learn it?

  • Attending lectures
  • Practicing
  • Attending office hours

40 of 59

1. Lecture

In lecture, we will:

  • Go over building blocks / rules
  • Work through (a very limited set) of problems in class
  • Each lecture will have sample files. After lecture, you should review the sample files and make sure you understand them. If you don’t, go to office hours.

41 of 59

2. Practicing

You have to practice programming in order to learn how to program.

Learning is an active process that requires lots of trying, failing, and iterating.

  • As you’re working through the problems, ask yourself:
    • Am I understanding these examples? (Could I explain this to my roommate?)
    • What resources might I use to enhance my understanding?
    • Am I giving myself the time I need to really work through the material?
  • Please make sure that you dedicate enough time to the assignments in the class as they are designed to make you practice!
    • Tutorials
    • Homework Exercises
    • Projects

42 of 59

3. Office Hours (starting week 2)

At some point in this course, you will find that the lecture and readings alone are not enough to help you understand a particular concept or get through an assignment. This is just the nature of learning (to program).

office hours are the answer.

  • What office hours are not
    • “place to get the answer”
    • “get bailed out”
    • “where to get caught up”

43 of 59

3. Office Hours

What can you do in office hours?

  • Troubleshoot bugs and issues
  • Discuss concepts you didn’t quite follow in lecture
  • Get unstuck on some idea
  • Get started on your homework if you don’t know where to begin
  • Meet your classmates
  • Ask your PM about the CS courses, or about tech internships, careers, and/or campus events

44 of 59

Questions so far?

45 of 59

Class Rhythm

Partially flipped classroom

  • Mondays - Normal Lecture (nothing to prepare)
  • Wednesdays - Tutorial Days (watch a pre-recorded lecture BEFORE class; complete an assignment in class)
    • Recorded Lecture has a Short Multiple-Choice Component
  • Fridays - Practice+ (focused on reinforcing the stuff from earlier in the week).
    • In-Class Participation via a "Mini-Quiz"
  • There will be roughly one Exercise (HW) due each week.

Note, there are a few exceptions to this rhythm as noted on the Course Schedule on Canvas.

46 of 59

Course Logistics & Communication

  • edSTEM
    • Information on how to join available at the top of our Canvas page.
    • All course general questions (content or administrative) should be asked here. Because the course is so large, this is the best way to get in touch with us.
    • Feel free to post a private edSTEM post if you only want it to go to the course staff
    • If you have a personal situation (you should contact Prof. Bain directly via email):
      • connor.bain@northwestern.edu
  • Everything else is found on Canvas.

47 of 59

Grading

Tutorials

10%

Mini-Quizzes

5%

Homework Exercises

25%

2 Projects

25%

3 Quizzes

35%

100%

48 of 59

Mini-Quizzes

  • Purpose: a check of your participation in the course (essentially a reminder that practice is necessary for each new topic)
  • Two flavors - 1. Out-of-class; 2. In-Class
  • Out-of-class – Pre-recorded lectures will have multiple choice questions embedded into them (one MQ per lecture) - usually on Wednesdays.
  • In-Class – We'll do "MQ Days" (announced 48 hours in advance) where we'll use PollEverywhere - usually on Fridays.

49 of 59

Tutorials

  • Starting next Wednesday in-class
  • You will be expected to watch a short recorded lecture before coming to class
  • Small groups of up to 8 students with one assigned course staff member
  • Purpose: practice writing and communicating about programs with your peers in a low-stakes environment.
  • No late Tutorials will be accepted. Tutorials can be submitted remotely starting Week 3 and we will provide alternative times on Tuesdays/Wednesdays if you can't make it to class on Wednesday.

50 of 59

Homework Exercises

  • Due each week on Fridays via Canvas at midnight (11:59pm)
  • Must be completed on your own
  • Purpose: practice writing larger programs using the ideas we learn in class
  • These exercises will be graded via an autograder (computerized grading machine) as well as checked for plagiarism against other students’ (including from past quarters) solutions, online solutions, generated code, and a large database of course content.
  • You may submit the assignments up to 48 hours late with a 10% penalty per 24-hour period.

51 of 59

Projects

  • These are just like Homework assignments but larger in scale (in terms of time commitment and amount of work) and more open-ended.
  • You'll have roughly 2 weeks to complete each project the first will be due in Week ⅞ and the the second will be due on our assigned finals date.
  • Purpose: practice writing larger programs using the ideas we learn in class

52 of 59

Quizzes

  • These are in-class assessments designed to be completed in 50 minutes.
  • While they are cumulative, they each have certain focus topics
  • Purpose: These allow you to demonstrate your ability to read, evaluate, and fix already existing programs on your own.

There are 3 total Quizzes in this course, the dates of which are available on our Course Schedule.

53 of 59

Attendance

  • Life happens – instead of penalizing, I like to incentivize attendance.
  • Attendance is mandatory for the first Tutorial (next Wednesday).
    • If you attend a Tutorial and put forth a good faith effort (up to the course staff's discretion), you will receive full credit for the tutorial.
    • In future weeks, you can choose to submit without attending but still need to watch the pre-recorded lecture. If you do so, your work will be evaluated for both completeness and correctness.
  • For in-person Mini-Quizzes (announced 48 hours in advance but typically each Friday)
    • If you come to class and participate in the "clicker questions" you will receive full credit. Note that you need to get more than 50% of clicker questions correct across the whole quarter in order to get attendance credit.
    • If you choose not to attend for any reason, you will have 60 hours from the start of your class to take a Canvas version of the quiz.
  • Quizzes are only offered in-person and in-class on the day scheduled.

54 of 59

Academic Integrity

  • You are encouraged to ask one another questions about assignments, but you must do your own work.
  • Easy way to avoid: do not look at anyone's code other than mine or your own.
  • We will consider the following to be academic violations:
    • Turning in someone else’s file
    • Reading and reproducing someone else’s code for a problem
    • Cutting, pasting, transcribing, etc. someone else’s code, in whole or in part
    • Allowing anyone else to type or edit your code other than someone on the course staff
    • Giving your code to someone else or posting your code in any public location
    • Using any tools to generate code.
  • Everything you submit in this class is subject to an in-person audit by course staff.

55 of 59

Accommodations

Any student requesting accommodations related to a disability or other condition is required to register with AccessibleNU (847-467-5530) and provide professors with an accommodation notification from AccessibleNU, preferably within the first two weeks of class.

All information will remain confidential.

56 of 59

Other Class Resources

  • We’ll be following the slides and lecture notes, rather directly from a textbook
    • All our course resources will be posted on Canvas
  • We'll use edSTEM, an online Q&A platform that allows you to ask questions (either privately or publicly) and have it answered by someone in our learning community. Sign-up details are on Canvas under the Course Resources page.
  • There will be lots of Office Hours starting week 2
  • We'll also suggest readings in two freely available textbooks. If you want a complete supplementary textbook, checkout the syllabus for links to free versions.

57 of 59

On Comparing Yourself...

Some people are coming into this class with a lot of programming experience. Some people have never seen a line of code in their entire lives.

  • If you have prior experience: you may want to consider taking CS150 (Programming 1.5) or CS111 (Functional Programming / Intro to CS) instead. This course is designed for beginners and may not meet your needs / interests.
  • If you are brand new: many beginners can and do earn As in this course. Try not to worry about how you compare to someone with a lot of experience. We are very mindful of the broad range of experiences that people have coming into the course. Someone else’s grade will not impact your grade.

58 of 59

On Taking Initiative...

If you are feeling lost that’s okay. If you’re feeling overwhelmed, remind yourself that there are resources to help you. Here are some things to reset and get back on track:

  • Go to Office Hours
  • Rewatch the Python for Everyone videos
  • Rewatch the lecture videos
  • Redo the lecture problems and pinpoint where you’re stuck
  • Reach out proactively to course staff

We want everyone to be successful, but you need to reach out and advocate for yourself. Take advantage of the resources that are available to you!

59 of 59

For Wednesday:

  • Register for edSTEM (details on Canvas under Week 0 Module).
  • Review the Syllabus - particularly the grading policies and grading equity policies
  • Explore the course materials online
    • Checkout Exercise 0 and download the file it asks you to download!