Welcome to CS 111!

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 & 2

Photo of Steve Richardson Steve Richardson: Dr. Richardson joined the BYU Computer Science faculty in fall 2021 and has been teaching a new course (CS 401R) he created on Machine Translation (MT). He just completed serving for four years as the president of the Association for Machine Translation in the Americas (AMTA) and has been involved in MT R&D for over four decades. Before coming to BYU, he worked for 10 years as the Manager of Machine Translation and Translation Systems at the Church of Jesus Christ of Latter-day Saints. Prior experiences include presiding over the Brazil SΓ£o Paulo South mission, 17 years at Microsoft Research as a Principal Researcher and manager of the Machine Translation Group, and 11 years at IBM working on NLP and MT. His lab at BYU is now creating a large corpus of Church translations in over 90 languages to do research in low-resource neural MT. He and his wife Marianna live in Alpine, Utah and have 12 children and 30 grandchildren.

Instructor: Section 3

Photo of Tom Stephens Tom Stephens: Dr. Stephens graduated with B.S. in Physics from BYU in 1996 and then went on to receive a M.S and Ph.D. in Astronomy from New Mexico State University in 1999 & 2003. He also holds a Masters of Library Science degree from the University of North Texas which he received in 2016. After receiving his Ph.D, Dr. Stephens went to work at NASA's Goddard Spaceflight Center doing software development for the Fermi Gamma-ray Space Telescope mission, a project he still works on. He has served as a developer, the Testing and Release Manager, Software Manager, and as a Senior Scientific Software Developer over the years. He also served for a year as the Information Systems Development Manager at the Science Support Center of NASA's Stratospheric Observatory for Infra-red Astronomy (SOFIA). For three years (2014-2017) Dr. Stephens was the Physical and Mathematical Sciences Librarian at the Harold B. Lee Library here at BYU before NASA lured him back. He started as professor in the Computer Science Department in December of 2020.

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 computation How to solve these problems What techniques lead to effective solutions
Systems Artificial Intelligence Graphics Security Networking Programming Languages Theory Scientific Computing Human Computer Interaction ... Decision Making Robotics Ethics & Safety Natural Language Processing ... Answering Questions Translation ...

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: Monday, February 6
  • Midterm 2: Wednesday, March 22
  • Final Exam: finals week (starts April 21)

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

All exams are scheduled to be held in the Testing Center.

Both midterms are open for three days, with the last day having a $5 late fee after 3:00pm.

Office hours

  • Dr. Richardson: MW 11:00am-1:00pm in TMCB 3372
  • Dr. Stephens: TBA

The TAs are regularly available five days per week in the help lab at TMCB 1121. Check the schedule at cs111.cs.byu.edu/staff/#ta-lab.

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!