1. Welcome and Introduction#

1.1. Introductions#

You can see more about me in the about section of the syllabus.

I look forward to getting to know you all better.

1.2. Prismia#

  • instead of slides

  • you can message us

  • we can see all of your responses

  • emoji!

Are emoji fun or do they make me Old? no penalty, this is for fun & to practice

  • [ ] fun

  • [ ] not cool

questions can also be “graded”

  • this is instant feedback

  • participation will be checked, not impact your final grade

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

What is the topic of this course?

  • [ ] hardware

  • [ ] programming

  • [x] computer systems and programming tools

or open ended

What is one thing you want the TAs and I to know about you?

1.2.1. Some Background#

  • What programming environments do you have?

  • What programming environments are you most comfortable with?

what programming tools are you familiar with? send exactly one tool name per message, but you can send multiple messages

This information will help me prepare

1.2.2. 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.3. Getting started with KWL charts#

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.

Today we did the following:

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

  2. Edit the README (only file there) 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. created a new branch (named priorknowledge) (editing a file step 7-8)

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

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

  7. Clicking Merge Pull Request

1.4. 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.5. 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.5.1. How it fits into your CS degree#

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.6. Course Admin#

1.6.1. Programming is Collaborative#

There are two very common types of collaboration

  • code review (workign independently and then reviewing)

  • pair programming (sitting together and discussing while writing)

We are going to build your skill in the code review model. This means you need to collaborate, but collaboration in school tends to be more stressful than it needs to. If students have different goals or motivation levels it can create conflict. So you will have no group graded work but you will get the chance to work on something together in a low stakes way.

You will have a “home team” that you work with throughout the semester to build a glossary and a “cookbook” of systems recipes.

Your contributions and your peer reviews will be assessed individually for your grade, but you need a team to be able to practice these collaborative aspects.

team formation survey

Important

Remember to fill out the team formation survey

1.6.2. Class forum#

This community repository “assignment” will add you to a “team” with the whole class. It allows us to share things on GitHub, for the whole class, but not the whole internet.

Important

When you click that link join the existing team, do not make a new one

1.6.3. Get Credit for Today’s class#

  1. Run your Experience Reflection (incalss) action on your kwl repo

  2. today’s evidence is your KWL repo existing and having the commits as above

1.7. Review today’s class#

  1. Review the notes after I post them.

  2. Fill in the first two columns of your KWL chart.

  3. review git and github vocabulary (include link in your badge PR)

1.8. Prepare for Next Class#

  1. Find the glossary page for the course website. Preview the terms for the next class: shell, terminal, bash, git, GitHub

  2. Check your kwl repo before class and see if you have recieved feedback,reply or merge accordingly.

  3. Make sure you have a working environment, see the list in the syllabus. Use the discussions to ask for help

1.9. More Practice#

  1. Review the notes after I post them.

  2. Fill in the first two columns of your KWL chart.

  3. review git and github vocabulary (include link in your badge PR)

  4. Read more about version control in general and add a “version control” row to your KWL chart with all 3 columns filled in.

1.10. Questions After Today’s Class#

Note

I will add the rest later, today I had a one time conflict.

1.10.1. How to directly merge all suggestions without clicking commit suggestion?#

Unfortunately, that is not an option on a PR review, but in general, you will not make a lot of changes in a review. We will learn other ways to do this

1.10.2. What is the importance of github in the real world? Is it so people can collaborate on code together, or maybe its somewhere to share your code and help others/inspire other code writers or a combination of both?#

GitHub facilitates both collaboration and social access of code. It can also host websites (like this one) (and my lab site ). It is deisgned to faciliate things that developers need.

1.10.3. I couldn’t find the button to turn a comment into a suggestion. My screen looked almost identical to the instructor’s, but the suggestion button wasn’t there.#

You may have clicked the blue + icon on a deleted line instead of an added line.

1.10.4. Easy way to remember everything we learned about pull requests?#

Keep coming to class and practicing. We will do them very many times and I will re-explain and explain in more detail over time.

1.10.5. How do I add collaborators to my repository?#

In the kwl repo you don’t have the permissions. But otherwise, on the GitHub Settings tab.

1.10.6. How does the grading work in this class?#

You earn badges by completing assigned activites.

1.10.7. Is attendance mandatory#

Mostly, yes. You can make up a missed class, but it will always be easier to participate in class.

1.10.8. How do these git commands work in the terminal?#

So far we used the terms, but have not seen the command directly yet. We will see them on Tuesday 1/31.

1.10.9. What are checks used for in the pull request tab?#

Checks can run tests or other quality checks on the code. For example, they can check that the code follows good style or that contributions do not change the test coverage.

1.10.10. Will we go more in depth in creating forks and features that git has?#

Yes we will go in depth on git features. We may not spend a lot of time on forks though (which are a GitHub feature). We will cover git in a way that does not cover every possible command, but focuses on How the most important ones work so that you have the foundation to understand the other parts (and new features that are introduced) quickly.

1.10.11. How are these systems used in work outside college?#

We will learn more about this later when we discuss the Stack overflow developer survey.

1.10.12. why does the branch have more commits then the main. I think i understand, but it could be clarified#

This is a good question. The branch had more commits than main because we told GitHub to make the new commit on a new branch. New branches have all of the history of the branch used to create them, plus any commits made to that branch.