Welcome to CS111!

Tips for navigating the slides:
  • Press O or Escape for overview mode.
  • Press the copy icon on the upper right of code blocks to copy the code

What we'll discuss today...

  • Introductions
  • What is CS?
  • About the course

Introductions

Instructor: Sections 1-6

Photo of Nancy Fulda Nancy Fulda: Nancy Fulda studies deep generative neural architectures, controllable text generation, and conversational AI from a connectionist perspective. Recent publications from her research lab include "Enhanced Story Comprehension for Large Language Models through Dynamic Document-Based Knowledge Graphs" (AAAI 2022) and "Towards Neural Programming Interfaces" (NeurIPS 2020). In addition to her academic work, Nancy enjoys writing science fiction. She has been nominated for the both the Hugo and Nebula Awards and has written on request for David Brin, TOR Books, and MIT’s Technology Review, as well as for the Dark Expanse space strategy game. She is the mother of six children.

Instructor: Sections 7-12

Photo of Brett Decker Brett Decker: Started teaching at BYU in 2019. Previously taught CS 142 — super excited to now teach CS 111. Also teach CS 236, CS 329, and CS 465. Spent over a decade working at Sandia National Laboratories in Computer Security and Software Engineering before coming to BYU.

TAs

We have an awesome group of TAs 😎. See the course website for information about them.

A Very Brief Introduction to Computer Science

What is Computer Science?

The study of...What problems can be solved using computationHow to solve these problemsWhat techniques lead to effective solutions
SystemsArtificial IntelligenceGraphicsSecurityNetworkingProgramming LanguagesTheoryScientific ComputingHuman Computer Interaction...Decision MakingRoboticsEthics & SafetyNatural Language Processing...Answering QuestionsTranslation...

About this course

Course Origin

We have borrowed and adapted this course from UC Berkeley's CS61A course --- with their permission and help

Big thanks to UC Berkeley and their CS61A staff!

Course topics

  • Managing complexity in programs (procedural abstractions, data abstractions, programming paradigms)
  • Python logo Deep understanding of programming concepts (using Python)
  • How computers interpret computer programs
  • Different types of languages (Regex, BNF, Scheme)
  • Problem solving techniques (both iterative and recursive approaches)

This course is challenging and often mind-blowing! 🀯

Course prerequisites

This is not an introductory programming class.

You should have prior coding experience with branching, loops, and functions.

If you do not think you have enough programming experience, consider taking CS 110 and joining us next semester.

Course format

Course components

  • Lectures
  • Labs
  • Discussions
  • Homeworks
  • Projects
  • Exams 😱
  • Textbook (composingprograms.com)
  • Office hours

Everything is linked from https://cs111.cs.byu.edu

Weekly schedule

Monday Tuesday Wednesday Thursday Friday
Lecture Lecture Lecture
Section: Lab/Discussion Section: Lab/Discussion

Labs & Discussions

You'll have the same TAs for both lab and discussion. Community! ❀️

Homeworks & Projects

Homeworks typically due Tuesday, projects typically due Friday. Start early, code often!

You can discuss the assignments at a high-level, but don't copy anyone else's code (unless it's your project partner).

Exams 😱

  • Midterm 1: Mon, September 26
  • Midterm 2: Mon, November 7
  • Final Exam: finals week

UC Berkeley has all past exams available on the UCB CS61A resources page. Study early, study often!

Office hours

Check out the schedule: cs111.cs.byu.edu/staff/office-hours/

Note: Instructors also have office hours

  • Dr. Fulda's will be Mondays/Wednesdays 10-11am, 1-2pm. TMCB 2218
  • Prof. Decker's will Mondays/Wednesdays 10-12pm. TMCB 2260

Getting help

Post questions on Discord. If you're debugging assignment code, follow the debugging template.

Check out our contact page for how to get in touch.

Course policies

Course policies

Read the syllabus. You are responsible for knowing the information there.

Learning
Community
Course Staff

Collaboration

Asking questions is highly encouraged

  • Discuss everything with each other; learn from each other!
  • Some projects can be completed with a partner
  • Choose a partner from your discussion section

The limits of collaboration

  • Please don’t look at someone else's code!
    Exceptions: lab, your project partner, or after you already solved the problem
  • Please don't tell other people the answers! You can point them to what is wrong and describe how to fix it, but don't tell them what to type, and don't type for them
  • Copying project solutions causes people to fail the course
  • We really do catch people who violate the rules, and we're getting better at it.

What's next?

  • Tuesday: Lab 00 to get your computer setup
  • Thursday: Discussions will start this week
  • Next lecture is on Wednesday, see you there!
1
Welcome to CS61A! Tips for navigating the slides: Press O or Escape for overview mode. Visit this link for a nice printable version Press the copy icon on the upper right of code blocks to copy the code