1 of 33

Course Overview

CS 110: Introduction to �Computer Programming with Python

2 of 33

Outline

  1. Introductions
  2. Overview of the course
  3. Logistics
  4. Questionnaire

3 of 33

About Me

  1. Call me Aleksandar
  2. I am a Professor of Computer Science
  3. I have been programming since high school

a. But in this course, you need absolutely NO background in programming

  • PhD from the Rice University
  • My research area is Computer Networking

4 of 33

Outline

  1. Introductions
  2. Overview of the course
  3. Logistics
  4. Questionnaire

5 of 33

Overview of the course

  1. Why should I take this course?
  2. What am I going to learn?
  3. How am I going to learn it?

6 of 33

Why should I take this course?

Programming is useful�It can be used to accomplish diverse, creative, and important social, scientific, and aesthetic goals.

Not just for computer scientists�Most people who write computer programs are not computer scientists, but rather people who occupy a range of professions — journalists, geographers, sociologists, scientists, artists, musicians, entrepreneurs, city planners, researchers, and many more.

7 of 33

Why should I take this course?

Part of a modern, computational literacy�Apart from work: as data and computing increasingly mediate modern life, knowing a bit about how these systems work is a valuable modern literacy that can help you to better reason about their benefits, risks, and harms.

8 of 33

How is this course different from majors track?

CS 110�Recommended for people who are:

  1. Interested in higher-level computing applications (CS+X)
  2. Considering majoring in CS but haven’t taken a college-level or Advanced Placement CS course

CS Majors Introductory Progression

  1. CS 111: Functional Programming (with Racket Student Language)
  2. CS 150: Python 1.5 (Intro to Python / Imperative Programming for Majors)
  3. CS 211: Object-Oriented Programming (with C++)
  4. CS 213: Intro to Computer Systems (lower-level computer constructs)

9 of 33

What am I going to learn?

  1. The fundamental building blocks of programming
  2. Some computing applications
  3. Some useful programming practices

10 of 33

1. The fundamental building blocks

Data TypesTells the interpreter how to treat a data value: different data types have different capabilities

Expressionsconstants operators, functions, methods, and so forth

StatementsControl structures, assignment, and so forth

FunctionsA way of organizing code to make it modular and reusable (i.e. they “encapsulate logic’). Can receive and return data.

ControlThe specific order in which the interpreter runs a program. Code runs from top-to-bottom but can also jump around (i.e. branch and repeat). It can be executed when particular events are called.

ObjectsBundles together data and logic to manage complexity. Everything in Python is an object

ModulesConvenient groupings of functionality that you import into your code (e.g. urllib, matplotlib)

11 of 33

2. Some computing applications

  1. Graphics, animation, and music
  2. User interfaces
  3. Data manipulation
  4. Networked computing�

12 of 33

3. Some useful programming practices

  1. Debugging and interpreting error messages
  2. Working with the command line
  3. Using specialized technical software
  4. Reading (and understanding) technical documentation�

See the course schedule for more information�

13 of 33

How am I going to learn it?

  1. Attending lecture
  2. Attending office hours
  3. Doing lots of practice problems

14 of 33

1. Lecture

In lecture, we will:

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

15 of 33

2. Office Hours

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 can help!

  1. Office hours are the best resource this course has to offer. Use them! We have 20 hours of office hours per week, just for you
  2. Even if you don’t attend the lectures (which you should), GO TO OFFICE HOURS!

16 of 33

2. Office Hours

What can you do in office hours?

  1. Troubleshooting bugs and issues
  2. Discuss concepts you didn’t quite follow in lecture
  3. Get unstuck
  4. Get started on your homework if you don’t know where to begin
  5. Meet your classmates and commiserate
  6. Ask your PM about the CS major (if your interested), or about tech internships, careers, and/or campus events

17 of 33

3. Tutorials

  1. Tutorial practice problems are designed to be similar to those featured your homeworks and projects.
  2. Please attend your tutorial session, get to know your undergraduate TA, and don’t hesitate to ask any clarifying questions, either related to the week’s tutorial problems or some other questions you have.
  3. Lectures may feel big and anonymous, but we hope that tutorials will be spaces which are participatory and interactive.
  4. Again, it’s up to all of you to create the space that you want.

18 of 33

4. Practice

You have to teach yourself to program! This is not the Matrix: I can’t infuse you with Python knowledge as you passively sit there.

  1. Learning is an active process that requires lots of doing (and failing)
  2. As you’re working through the problems, ask yourself:
    1. Am I understanding these examples?
    2. What resources might I use to enhance my understanding?
    3. Am I giving myself the time I need to really work through the material?
  3. Please make sure that you dedicate enough time to the homework (between 4-8 hours per week)

19 of 33

Questions so far?

20 of 33

Outline

  1. Introductions
  2. Overview of the course
  3. Logistics
  4. Questionnaire

21 of 33

Course Logistics & Communication

  1. Course communication: Piazza
    1. All course questions should be funneled through Piazza. Because the course is so large, this is the best way to get in touch with us. Feel free to post a private piazza message if you only want it to go to the course staff.
  2. Resources and submissions:
    • Course website for public resources (slides, code files, reference material)
    • Canvas for private resource: assignment submissions, etc.

22 of 33

Tutorials

This course involves a series of hands-on tutorials that you will work with members of the teaching staff to complete.

We will grade your tutorials based on effort (pass/no pass). In other words, even if you don’t get everything working perfectly, you will still get full credit if you demonstrate a good-faith effort. You must submit at least 7 tutorials (out of 8 or 9) on the day the tutorial is due — usually Wednesdays.

While only 7 are technically required, we encourage you to complete all of the tutorials.

No late tutorials will be accepted, as we will post solutions right away.

23 of 33

Grading

Your course grade is calculated based on 200 points as follows:

2 Projects

2 x 40 Points

80 Points

40%

2 Quizzes (of 3)

2 x 30 Points (lowest score dropped)

60 Points

30%

5 Homeworks (of 6)

5 x 8 Points (lowest score dropped)

40 Points

20%

7 Tutorials (of 8 or 9)

5 x 4 Points (lowest scores dropped)

20 Points

10%

200 Points

100%

24 of 33

Homework Grading

Homeworks are graded according to the following scale:

No credit

0 Points

Little understanding/effort demonstrated

Check minus

3 Points

Some effort made, but significant features are missing or not working

Check

6 Points

Mostly working, but some errors or issues were found

Check Plus

8 Points

Excellent work: Works exactly as it should, follows design guidelines; and demonstrates understanding of the learning objectives

25 of 33

Homework Grading

  • If you turn your homework late (within 48 hours of the deadline) you will be penalized 2 points (~25%).
  • Homework that is later than 48 hours will not be accepted.

26 of 33

Work and Grading

  1. Tutorials are typically due on Wednesday night at 11:59PM
  2. Homework and projects are typically due on Friday night at 11:59 PM unless otherwise indicated (be sure to check the schedule)
  3. You must name your files exactly as specified (because we have grading scripts that depend on files being named a certain way).
  4. The quizez will use the Lockdown Browser (more on that in the coming weeks).

27 of 33

Course Staff

Instructor

  • Aleksandar Kuzmanovic

Grad TA

  • Weijian Li

Peer Mentors

We have 10 undergraduate TAs to help you. See the syllabus for their contact info.

28 of 33

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.

29 of 33

Integrity, Honesty, and Climate

PosturingThis is a course that is designed for beginning programmers. Please respect each other’s learning process. No shaming, no showing off. If you want to discuss topics beyond the scope of the course, come to my office hours!

Academic Honesty

  • Do not exchange code fragments on any assignments
  • Do not copy solutions from any source
  • You can look at others’ code, but don’t scribe it (whiteboard, paper, code)
  • You cannot upload / sell your assignments to code sharing websites
  • You cannot “outsource” your work to friends, family, or contractors

30 of 33

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 reconsider taking CS150 (Python 1.5) or CS111 (Functional Programming) instead: This course is designed for beginners, and you might not be challenging yourself.
  • 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: I am very mindful of the broad range of experiences that people have coming into the course. Someone else’s grade will not impact your grade.

31 of 33

On Taking Initiative...

If you are feeling lost or overwhelmed, this is very normal. There are things you can do to reset and get back on track:

  • Go to Office Hours
  • Rewatch the Python for Everyone videos (Severance)
  • Rewatch the course videos
  • Redo the lecture problems and pinpoint where you’re stuck
  • Reach out to your peer mentor

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!

32 of 33

Outline

  1. Introductions
  2. Overview of the course
  3. Logistics
  4. Course Survey

33 of 33

For Next Class...

  1. Register for Piazza!

https://piazza.com/northwestern/spring2023/cs110/home

2. Watch the lecture video before class (will be posted soon)!

3. You will be signing up for tutorials on Friday which start next week!