00-Inspiration

____________________________________________________


Screencasts

  • Password for the Vimeo videos is in Zulip chat.
  • https://vimeo.com/502761594
  • Tip: If anyone want to speed up the lecture videos a little, inspect the page, go to the browser console, and paste this in:

document.querySelector('video').playbackRate = 1.2



Topics

  • What is this class?
    • Everyone even remotely technical needs to be able to program, which is also a pre-requisite of managing someone who can.
    • Computational thinking, debugging, etc.
    • Not just syntax
    • Problem first methods
    • Attention to detail (whitespace matters)!
      • You may not have cared about what seem like small details before, but they matter now.
    • Meta-coding practices
      • tracing code step by step
      • manual code-shuffling vs genetic programming
      • shotgun debugging versus hypothesis testing
    • What does expertise look like?
    • What does expertise take?
    • Coaching and practice programming
      • lines of code = time under tension, time on-task, time practicing a skill
      • I do it all with you
    • Extensive reading versus quick delivery
    • ACTUALLY READ AND UNDERSTAND INSTRUCTIONS!
      • If you can't read English in full depth, which requires less precision of understanding to do well, then how are you going to read code, which requires far more precision of understanding and attention to detail???
    • How to use a computer (a surprising barrier for many students learning to program)
  • Who is in this class?
    • First-year students (CS)
    • First-year students (CPE)
    • First-year students (EE)
    • First-year students (Physics)
    • First-year students (Math/Stat)
    • Juniors and Seniors (CS) Why?
    • First-year students (Other STEM) Why?
    • Which of these students is the class for?
  • How to approach this class?
    • For each new programming language you learn, you generalize your knowledge of programming.
    • We expect you learn AT LEAST 4-5 languages before graduation.
    • A conversation that happens all-too-often with first and second year students:
      • Young student's opinion: Meh, I can't be bothered to learn [Python/C++/C/Bash/Julia/Rust], I'm a [visual-basic/JavaScript/Java/FORTRAN/C/C#/Haskell/whatever] person.
      • PhD student TA, postdoc, Faculty, or an actually expert programmer's opinion: Upon graduation with your BS, at bare minimum, you should know 5-6+ programming languages pretty well, and have mastered at least 2-3, and then you might begin to appreciate the value in the variation between those languages. Once you have mastered 7-10+, you will begin to have a sound basis for declaring your preference for one language over another. The nuances that make one language better than the other are subtle, require many hours of development time, and most importantly, many hours (think 1000+) making the mistakes that you tend to make in each language.
      • The student who barely makes it through a CS degree and eeks out a job offer might become an X-language programmer (often Java...). The computer scientists who have companies competing for their applications can pick up a language in a week (and could be operable in a day), because they focused on generalizing the principles behind those languages.
      • In order to have a debate, you need to define terms first; in order to learn adjectives and abstractions in natural language, you need to know some nouns; in order to learn computational problem solving, you need to memorize the fundamentals of a language first. Language basics is the first 1/2 of this class, in this later part, we generalize more!
      • That being said, not all languages are good at something; some are just poorly designed, with some degree of objectivity, and some really are wholly better than others.
  • There are two syllabi for this course
  • Canvas: https://mst.instructure.com/
    • Show sub-pages
    • Cahoot (ex-Kahoot)
  • Zulip chat: https://cs1500.zulipchat.com
    • Give demo
  • Lecture, discussion, assignment format
    • Async screencast and mini-quizes
    • Sync chat/discussion/questions
    • Async programming assignments
  • Do this NOW: Syllabus quiz
  • As we progress through the semester, if you want extra practice implementing computational solutions to a wide variety of problems and algorithms, with auto-graded correctness, then check out Kattis: https://open.kattis.com/
  • If you want extra reading, see the Syllabus and each topic page (there is tons of extra reading I list!).
  • Meet your neighbor and exchange contact information (not this semester!)
    • In person alternatives (while masked):
      • CS lounge CS212/213
      • Office hours (Time and room TBD)


Next: 01-Computation



Backlinks: index:Classes:ComputationalThinking:Content index:Classes:ComputationalThinking:Content:01-Computation