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: Section 1

Photo of Michael Clark Michael Clark: Brother Clark dropped out of High School to pursue higher education and earned a BSc in Computer Science from BYU in 2005. He then earned a MSc in Information Systems and Operations Management from the Hong Kong University of Science and Technology in 2006 before leaving to serve a mission in Atlanta, GA en español. When he returned, he worked at HIT Webdesign, with Zagg's website team, at InsideSales.com, at Jolt (then called Intuiplan), and at various companies under the umbrella of Hall Labs. Deciding he finally had enough real-world work experience to be a great professor, he returned to BYU to study Usable Security and is a current PhD candidate.

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 term.

Course format

Course components

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

Weekly schedule

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

Labs & Discussions

Make sure you are signed up for a Lab section (002-004) as well as the lecture.

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

Homeworks & Projects

Homeworks due after one lecture and lab period, labs due the next day. Projects are typically due on Saturday night. Start early, code often!

Due to Spring term, we'll be moving fairly fast. The earlier you find you need help, the better!

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: Thursday, May 11
  • Midterm 2: Thursday, June 1
  • Final Exam: finals week (June 22-23)

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 two days, with the last day having a $5 late fee after 3:00pm.

Office hours

  • Brother Clark: MWF after class or check TMCB 267 and we'll find somewhere to talk

The TAs are regularly available five days per week in the help lab at TMCB 1121. Check the schedule at cs111.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?