Day 0: Syllabus, and Computers are Really Neat

back · home · slides · CMSC 201 (Fall 2024) @ UMBC · Introduction to the course and I attempt to convince you that computer science is awesome!

See the syllabus here (UMBC login required).

Welcome to CMSC 201 (Intro to Computer Science)!

Day 0 Agenda:

  • Who am I?
  • Syllabus
  • The Really Long Part where I talk about cheating
  • Tools of the trade
  • A bit of fun programming :)!
  • Next steps
  • Who are you???

  • Shane Donahue
  • Have been programming in Python (the language we're learning!) for 15 years 😱
  • Graduated from Dakota State University
  • Picture of snow storm in south dakota. Source: https://www.weather.gov/images/abr/EventSummaries/Winter/20190411/DanielBaslerJr_Webster_4-11-19_1130am.jpg
  • Work in the cyber security industry (still do, part time)
  • Play CTFs (capture the flag, hacking competitions)
  • Secretly likes writing HTML (that's what this is written in)
  • Gotten tea at every bubble tea location in Maryland
  • Office hours: Tu/Th 2PM-3PM in ITE 373 (or email me whenever! sdonahue@umbc.edu)
  • Why are you here?!

    To learn programming! Probably!

    My goals are, in order of priority:

  • Prepare you for higher level courses
  • Help you figure out if CMSC is what you want to do
  • Leave you thinking that computers are really cool
  • We're going to learn the basics of programming, with a language called Python 🐍!

    This may be your first class in programming... that’s great! We assume no prior programming experience.

    This is what Python looks like:

    from math import pi
    
    print(pi)
    
    radius = float(input("Input radius, I'll give circumference: "))
    
    # Circumference = 2 * r * pi
    c = 2.0 * radius * pi
    print(c)
    
    if c > 24901:
    	print("That's bigger than planet Earth (in miles)!")
    3.141592653589793
    Input radius, I'll give circumference: 3959
    24875.130631123982
    3.141592653589793
    Input radius, I'll give circumference: 4000
    25132.741228718343
    That's bigger than planet Earth (in miles)!

    What is programming good for?

    Programming is instructing a computer what to do. Anything a computer does is, at some level, programmed!

  • Every video game ever made
  • Everything that happens on your phone or laptop
  • Every website you've ever visited
  • Running pacemakers and insulin pumps
  • Controlling elevators and bridges (and ships that may or may not crash into bridges)
  • Bioinformatics, analyzing the human genome
  • Modern AI, ML, ChatGPT
  • Planning agriculture and farm management
  • Literally everything
  • But for now, the boring part...

    Syllabus

    Loose course outline:

  • This! (talking about the course)
  • Running programs, using Linux
  • Variables, conditionals
  • Loops
  • Strings
  • Functions and modules
  • Dictionaries (hash maps)
  • File I/O (input output)
  • Recursion
  • A lot of misc compsci fundamentals :) e.g., What is a byte? How does a computer actually work, at a high level?
  • Note: I will be out the weeks of October 7th and October 28th :( But worry not, I will record lecture videos (if I can't find a guest lecturer) and make sure you all are in a good place!

    Grades

    Grades are out of a thousand (1000) points, each 100 points is a letter grade (1000 is 100% (A), 900 is 90% (A), 800 is 80% (B)...)

    CMPE and CMSC majors must earn a B to advance in their major!

    This class has (see syllabus on Blackboard for authoritative details):

  • Homework 0 (10 points)
  • 6 "Real" Homeworks (40 points each)
  • 3 Projects (80 points each)
  • 11 lab assignments (12.5 points each, drop 3 lowest)
  • Academic Integrity Quiz 5 points
  • Two midterm exams (75 and 125 = 200 points) (on paper!)
  • A comprehensive final exam (200 points (on paper!)
  • Coordination

    This class is coordinated! That's a UMBC thing where one person or group creates material for all the sections, in order to keep things consistent. This class is coordinated by Prof. Eric Hamilton.

    This means... I don't make the homework, projects, or exams. But I can still help you with all of the material! And I'm the person that'll be talking for two and a half hours a week :)

    Your discussion section is a lab!

    In your lab, you’ll be completing lab assignments. You MUST go to your assigned section -- you won’t get credit otherwise.

    The coding lab-discussion is an opportunity for you to ask questions in a smaller environment and to really figure things out. You’ll be given short lab assignments after your TA goes over a short review or Q&A period at the beginning of the hour.

    Assignment submission

  • You will submit projects using the submit program on the GL server. They are due at 11:59:59PM on the day specified in the assignment.
  • Your first assignment will be to learn how the submission system works :)
  • You can submit as many times as you want! You can submit a thousand times a second! Don't worry about getting it right the first time, as long as it's before the deadline, you can submit again.
  • Late assignments will receive a zero. Which is pretty brutal! Submit early! We only grade what has been submitted before the deadline. But please reach out (as early as possible) if you have extenuating circumstances that require an extension.
  • Really no actually please for real though start early on assignments

    Programming, if you haven't done it before, is VERY unintuitive!

    Don't be intimiated-- anyone can learn it, and I will do my best to make it approachable-- but really start early and give yourself time to be stuck. Progress comes from pushing through those boundaries, which require time. Assume each assignment may take upwards of 20 hours! No time estimate is wrong, it all depends on you and your experience.

    There is always a flood of emails before an assignment is due. Assume the worst, and assume the TAs or I won't be able to respond in time :(

    SDS/ADA

    If you have any disability information on record with SDS, I received a notification and Prof. Hamilton (who is running the exams) will be aware. If you ever have questions or concerns on this, or you do not receive your approved accomodations, reach out as soon as possible (sdonahue@umbc.edu or Eric at eric8@umbc.edu).

    Attendance

    ...is not required! But highly recommended!

    All the lecture material will be posted to the class page or blackboard. You will have access to it.

    Lectures are NOT recorded, unless class is canceled. However, all material is in the lecture notes and homework.

    If you like taking notes, that is also recommended! Helps solidify knowledge :) For digital note-taking, Logseq or obsidian.md are quite good!

    I plan to do (optional) in-class quizzes for extra credit if I can get Prof. Hamilton to let me :)

    The long part about cheating

    Do NOT submit someone else’s work as your own. Both of you will receive an F in the class. Seriously. Don’t do it.

    So what can you do?

    DO:

  • Talk to classmates about concepts
  • Get help from a TA or instructor
  • Work on (non-HW) practice problems together!
  • DO NOT:

  • Download someone else’s work
  • Copy paste someone else’s code
  • Work on HW together, or help someone with their HW
  • Give your code away
  • Leave your computer unattended 🕵️
  • Attempt to buy code online
  • ChatGPT 💀
  • You should NOT worry about "accidentally cheating" by happening to have a solution that is similar to someone else. It is always very obvious and not a coincidence. As long as the code is coming exclusively from your brain and fingers, you're good.

    See the syllabus for the full gory details. And as always reach out if you ever have a concern!

    Oh yeah? How do you plan to thwart my cheating plans?

    We use some special cheating software to detect similar submissions. It is very difficult to trick! But not impossible to trick. The catch is, it takes more effort to trick it than to do the assignment legitimately :)

    All of the assignments have very specific Python features allowed. ChatGPT and friends will generate "forbidden arts", using Python features that are not "allowed" for the given assignment.

    Just please don't... the risks are great and the benefits are marginal. Come to get help with the material instead!

    Getting help on class material

    In this course, the TA and instructors are part of the course offering! We are here to help you. You can ask ANY 201 TA for help in this course. They will hold office hours in ITE 240 (see schedule on blackboard). They will have yellow lanyards.

    If you don't like the TAs, or just want to talk to me, you can come to my office hours at 2PM-3PM in ITE 373!

    Other resources

  • Tutoring (by appointment) from the Learning Resources Center
  • Computer help (e.g. working with the GL server) from DoIT. (By phone or in person)
  • If you don't know, email me! sdonahue@umbc.edu
  • Tools of the trade

    (All of the information here is repeated in Homework 0.)

    Linux and SSH

    We will use SSH to connect to GL. This is where all of our homework submissions will take place. You can also write code on it! Or do anything! I'm running Linux right now :)

    SSH should already be on your computer, even Windows! Open cmd.exe, and you can use ssh just like I do.

    Logging in:

    ssh yourusername@gl.umbc.edu

    (Then the annoying duo auth step).

    Windows: You can use PuTTY or cmd.exe.

    Picture of cmd.exe. Source: https://www.betaarchive.com/imageupload/2020-07/1594645831.or.44140.png

    Mac: Open terminal and ssh from there.

    You can edit on your local machine, and copy things over. You can use WinSCP (on Windows) or scp (the command) on Mac or Linux.

    Let's learn some Linux commands!

    Text editors

    We do not require any particular text editor. The only officially supported editor is emacs.

    Your options that I will help with:

  • nano
  • vim
  • emacs! UMBC's ol' reliable
  • You're-on-your-own options

  • VS Code (the most popular real world editor)
  • Pycharm (some other sections use this)
  • I recommend using VS Code with the Remote-SSH add-on. Or just use emacs! There is minimal guidance on this. Try whichever you'd like, but remember that TAs will not provide any official IDE support.

    Homework 0

    Homework 0 is currently released, due Sep 6th 2024, and will walk you through “how” to do 201 homework:

    Let's look at it briefly...

    Next up...

  • No discussion this week!
  • Homework 0 is released, due Sep 6th 2024!
  • Next class will an intro to Python with variables! And we'll go from there :)

    Questions or concerns?