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. Some Background#

  • What programming environments do you have?

  • What programming environments are you most comfortable with?

This information will help me prepare

1.3. 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.4. 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 add_name) (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.5. Git and GitHub terminology#

We also discussed some of the terminology for git. You can review that with the GitHub Practice Assignment. We will also come back to these ideas in greater detail later.

1.6. 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.6.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.7. 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.

1.8. Review Today’s Class#

  1. More practice with GitHub terminology

  2. Review the notes after I post them

1.9. Prepare for Next Class#

  • Read the syllabus, explore website

  • Bring questions about the course

  • Think about one thing you’ve learned really well (computing or not) and how do you know that you know it? (bring your example)

  • Post an introduction to your classmates on our discussion forum

1.10. Questions After Class#

Important

I group the questions by category and paraphrase some of them. I do this to combine questions that make more sense for me to answer as one question, to make them more concise, and to make sure no personal information ends up on this site

1.10.1. On the material#

1.10.1.1. Where do repositories go once added?#

When you create a repository on GitHub it stays on GitHub’s servers until you make copies of it elsewhere. Next week, we will see how to do that. You can find the most recent repositories that you have worked on on the left sidebar of github.com. You can find everything for our class on the course GitHub organization page, which is also linked in BrightSpace.

1.10.1.2. what is the definition of git?#

We will build up our definition of git over the next few classes, but so far it is a version control system.

1.10.1.3. Is there a very large difference between git and github?#

GitHub is a Microsoft owned company and platform for hosting git repositories. git is an open source version control system. You can run it locally without a cloud host, or through many different cloud hosts like, Bitbucket, GitLab or even self-host a git server via for example Gogs or Gitlite

1.10.2. On what we will cover#

1.10.2.1. How in depth will this class go into networking?#

Just a little bit, we will cover some networking topics, but not in great depth.

1.10.2.2. Will this class make me GitHub proficient?#

Yes, proficient in git and GitHub.

1.10.3. Logistics#

1.10.3.1. What is the best thing about this class?#

I’m biased, so I won’t answer this directly, but I will reach out to some former students to collect answers.

1.10.3.2. What types of assignments will there be?#

You will have mostly short answer reflection questions to submit, and many will require you to d some shell scripting or git command lines. You will have some small code exercises, but mostly small modifications to programs and to run and evaluate the output of them.

1.10.3.3. what kind of coding will we be doing?#

This course is about programming, but it’s not actually centered on a lot of new programming. We will run some python code and some C code. We will generate some HTML and CSS that we do not need to edit.

We will do a lot of shell scripting though. This is one of the things past students say the learned the most.

1.10.3.4. Will we be able to go back and review the things that we went over in class? As in, will there be resources on Brightspace to allow us to do this?#

Not on Brightspace, but you can always get the transcript from Prismia and there will be notes like this after each class. Use the > menu in the top left corner and then click the three bars menu and select ‘Get a transcript’. Then choose the course, pick the date and time and it will generate a transcript.

screenshot of get a transcript

1.10.3.5. How many hours should we be spending outside of class to study?#

For a 4 credit class, you should expect to spend approximately a total of 180 hours over the course of the semester, including class time. We will have approximately 2.5*14 = 35 hours of class,so there are 145 hours left, which works out to about 10 hours per week outside of class.

For this class, I expect you to use that time approximately as follows:

  • 1 hour preparing for each class (2x per week)

  • 2 hours reviewing notes & doing review exercises after each class

  • 2-3 hours doing more practice exercises to get additional practice

  • 3-4 hours extending and experimenting with things from class for deeper explorations

This means that I expect it to be fair for you to earn an A. If the review or prep are taking you much longer, please reach out to Mark or me so that we can help figure out where you’re stuck. If things consistently take you to long, you might be doing something the long way, or I may have assigned more than I expected and need to cut back.