1. Welcome, Introduction, and Setup#

Today:

  • intros

  • what the learning goals of the course are

  • see how in class time will work

  • start learning git/github by doing

Not Today:

  • syllabus review (on your own time/lab Monday)

  • cours policy discussion (next week)

1.1. Introductions#

  • Ayman Sandouk

  • Trevor Moy

  • Elijah Smith-Antonides

1.2. Why think like a computer?#

With Large Language Models (LLMs) able to write code from English (or other spoken languages, but LLMs are generally worse at non English)

Let’s discuss some examples.

Many things in this course are things you will use everyday some of it is stuff that will help you in the trickest times.

What differentiates LLM (Large Language Modules) from Computer Scientists?

1.3. GitHub#

  • This class is not a GitHub class

  • GitHub is the main tool that we will be using in this course

  • Not expecting you to be familiar with it

  • Homework is submitted through GitHub in a non-traditional way

  • Great practice for real-life software development with a team or even individual work

  • More on that later

I look forward to getting to know you all better.

1.4. Prismia#

  • instead of slides

  • you can message us

  • we can see all of your responses

  • emoji!

questions can be “graded”

  • this is instant feedback

  • participation will be checked

  • correctness will not impact your final grade (directly)

  • this helps both me and you know how you are doing

Questions can be multi-choice

or open ended

And I can share responses, grouped up

1.5. This course will be different#

  • no Brightspace

  • 300 level = more independence

  • I will give advice, but only hold you accountable to a minimal set

  • High expectations, with a lot of flexibility

as an aside another Professor describing what she does not like about learning management systems (LMS). Brightspace is one, she talks about Canvas in the post, but they are similar.

I will not chase you.

I do not judge your reasons for missing class.

  • No need to tell me in advance

  • For 1 class no need to tell me why at all

  • For 1 class, make it up and keep moving

  • For longer absences, I will help you plan how to get caught up, and you must meet university criteria for excused absence

1.5.1. My focus is for you to learn#

  • that means, practice, feedback, and reflection

  • you should know that you have learned

  • you should be able to apply this material in other courses

1.5.2. Learning comes in many forms#

  • different types of material are best remembered in different ways

  • some things are hard to explain, but watching it is very concrete

1.6. Learning is the goal#

  • producing outputs as fast as possible is not learning

  • in a job, you may get paid to do things fast

  • your work also needs to be correct, without someone telling you it is

  • in a job you are trusted to know your work is correct, your boss does not check your work or grade you

  • to get a job, you have to interview, which means explaining, in words, to another person how to do something

1.7. What about AI?#

Large Language Models will change what programming looks like, but understanding is always going to be more effective than asking an AI. Large language models actually do not know anything, they just know what languages loook like and generate text.

if you cannot tell it when it’s wrong, you do not add value for a company, so why would they pay you?

1.8. This is a college course#

  • more than getting you one job, a bootcamp gets you one job

  • build a long (or maybe short, but fruitful) career

  • build critical thinking skill that makes you adaptable

  • have options

1.9. “I never use what I learned in college”#

  • very common saying

  • it’s actually a sign of deep learning

  • when we have expertise, we do not even notice when we apply it

  • college is not about the facts, but the processes

1.10. Learning is hard#

1.11. How does this work?#

1.11.1. In class:#

  1. Memory/ understanding check

  2. Review/ clarification as needed

  3. New topic demo with follow along, tiny practice

  4. Review, submit questions

1.11.2. Outside of class:#

  1. Read notes Notes to refresh the material, check your understanding, and find more details

  2. Practice material that has been taught

  3. Activate your memory of related things to what we will cover

  4. Read articles/ watch videos to either fill in gaps or learn more details

  5. Bring questions to class

1.12. Getting started#

Your KWL chart is where you will start by tracking what you know now/before we start and what you want to learn about each topic. Then you will update it throughout the semester. You will also add material to the repository to produce evidence of your learning.

Accept the assignment to create your repository (aka repo)

We have a glossary!!

repository

1.12.1. What is a directory?#

A “directory” in computing is a file system structure that acts like a container, organizing and managing files and other directories (often called folders) on a computer

pro tip: links are often hints or more information

Commits represent a message to your future self/teammates/viewers. 
They mark what signifigant change has been made between one "checkpoint" in the status of a project and the next.

1.13. What is this course about?#

In your KWL chart, there are a lot of different topics that are not obviously related, so what is this course really about?

  • practical exposure to important tools

  • design features of those tool categories

  • basic knowledge of many parts of the CS core

  • focus on the connections

We will use learning the tools to understand how computer scientists think and work.

Then we will use the tools to examine the field of Computer Science top to bottom (possibly out of order).

1.13.1. How it fits into your CS degree#

knowing where you’ve been and where we’re going will help you understand and remember

1.14. In your degree#

this describes the BS; BA drops some of the math

In CSC110, you learn to program in python and see algorithms from a variety of domain areas where computer science is applied.

Then in CSC 340 and 440 you study the algorithms more mathematically, their complexity, etc.

In CSC211, 212, you learn the foundations of computer science: general programming and data structures.

Then in 301, 305, 411, 412 you study different aspects of software design and how computers work.

In this class, we’re going to connect different ideas. We are going to learn the tools used by computer scientists, deeply. You will understand why the tools are the way they are and how to use them even when things go wrong.

1.15. GitHub Docs are really helpful and have screenshots#

they pay people to update them so I direct you to theirs mostly instead of recreating them

Today we did the following:

  1. Accept the assignment to create your repo: KWL Chart

  2. Edit the README to add your name by clicking the pencil icon (editing a file step 2)

  3. adding a descriptive commit message (editing a file step 5)

  4. adding prior knowledge

  5. created a new branch (named prior_knowledge) (editing a file step 7-8)

  6. added a message to the Pull Request (pull request step 5)

  7. Creating a pull request (pull request step 6)

  8. Clicking Merge Pull Request

join a team

we will use this for discussions and see more in lab, but having you join now makes it easier for me to make you a member and give you access to a special member view

1.16. Git and GitHub terminology#

We also discussed some of the terminology for git. We will also come back to these ideas in greater detail later.

1.16.1. GitHub Actions#

GitHub allows us to run scripts within our repos, the feature is called GitHub Actions and the individual items are called workflows.

Navigate to your actions tab

1.16.2. Get Credit for Today’s class#

**Run your Experience Reflection (inclass) action on your kwl repo **

talk with peers to make sure you remember what the right way to click on it is

On the created PR, go to the Files section, edit the file, and commit the changes.

1.16.3. Fix your repo#

So, it is apparently a weird bug in GitHub, that the actions were not working,

but it is easy (though a little annoying) to fix.

1.16.4. Make the edits#

On each file in the .github/workflows folder that ends in .yml edit in some small way

Important

if the file has the word “reviewer” in, change the reviewer from “brownsarahm” to “AymanBx”

else: make any small change (eg add an additional blank line in a place where there is a blank line already).

1.16.5. Run forgotten badge action#

  1. Go to the actions tab of your repo

  2. Select the action that has the name Forgotten Badge (Late, but was in class)

  3. In the blue banner that appears click Run Workflow

  4. leave the branch set to main

  5. Enter the date 2025-01-23

  6. Wait a minute or so for it to run, when it has a green checkmark, go to your PR tab

  7. select the PR with the title Experience Report 2025-01-23

  8. Go to the files tab of that PR and edit it (use the 3 dots menu in the top right of the file box)

  9. fill in the information and commit to the same branch (do not open an additional PR)

  10. assign @instructors to review your PR.

For screenshots, see the Manually running a workflow, on GitHub

1.17. Prepare for next class#

  1. (for lab Monday) Read the syllabus section of the course website carefully and explore the whole course website

  2. (for lab Monday) Bring questions about the course

  3. (for class Tuesday) Think about one thing you’ve learned really well (computing or not). Be prepared to discuss the following: How do you know that you know it? What was it llike to first learn it? (nothing written to submit, but you can use the issue to take notes if you would like)

1.18. Badges#

  1. accept this assignment and join the existing team to get access to more features in our course organization.

  2. Post an introduction to your classmates on our discussion forum (include link to your comment in PR comment, must accept above to see)

  3. Read the notes from today’s class carefully

  4. Fill in the first two columns of your KWL chart (content of the PR; named to match the badge name)

  1. accept this assignment and join the existing team to get access to more features in our course organization.

  2. Post an introduction to your classmates on our discussion forum (include link to your comment in PR comment, must accept above to see)

  3. Read the notes from today’s class carefully

  4. Create a profile readme and include a screenshot of your profile

  5. Fill in the first two columns of your KWL chart (content of the PR; named to match the badge name)

1.19. We have a Glossary!!#

For example, the term we used above:

repository

Tip

In class, on prismia, I will sometimes link like above, but you can also keep the page open if that is helpful for you.

In the course site, glossary terms will be linked as in the follwing list.

Key terms for the first class:

1.20. Questions after class#

1.20.1. Should I be doing some practice/review badges between classes?#

  • Before each class, you need to complete the tasks assigned in the prepare issue

  • At the end of each class, run the experience report (in class) action and fill out the file at your own time

  • After each class, you get to pick one of the two (Practice/Review) and do that one. You only get graded for one of them