Terminus Github Student



  1. TermiNus is a really simple all-in-one CLI based program for NUS undergraduate students.
  2. Free premium subscription for students We believe that students should have access to the best tools out there. So if you are studying computer science, enjoy all of the Termius Premium features completely free! Join the GitHub Student Developer Pack and link.

Everyone:

Welcome to CSE 20289 Systems Programming, which (as thesyllabus states) is a course that 'introduces students to the Unixprogramming environment where they will explore various command lineutilities, files, processes, memory management, system calls, datastructures, networking, and concurrency'. What this means is that you willfirst learn how to effectively utilize a modern Unix programmingenvironment and then you will study how to develop applications that takeadvantage of system level abstractions such as files, processes, andsockets.

We’re proud to announce we’ve partnered with GitHub to be part of the GitHub Student Developer Pack. As a member of the GitHub Student Developer Pack, you will get 6 free months of 60+ Educative courses covering in-demand topics such as Machine Learning, Web Development, Python, Kubernetes, and then some - a value of over $2,000.

Course Overview

Last semester, most of you took the CSE 20311 Fundamentals of Computingcourse where you learned how to program in the C language. Afterplaying the Game of Life, generating anagrams, and building fractals,you should be capable of programming in a compiled language usingconditional statements, loops, and functions. Moreover, you should besomewhat familiar with strings, arrays, and those crazy pointers.

In this course, we will build on this foundational knowledge by exploringthe Unix programming environment in order to get a better idea of how acomputer works and how to build applications that utilize different aspectsof conventional computing systems. The semester can be broken down intothe following units:

  1. Unit 01: Bourne Shell

    First, we will begin by learning how to utilize the Unix shell andthen how to compose multiple Unix utilities into pipelines andshell scripts while taking advantage of regular expressions.

  2. Unit 02: Python

    Next, we will explore processing and manipulating data using Python.Along the way, we will discuss how to exploit the functionalprogramming paradigm to efficiently perform parallel computing.

  3. Unit 03: C

    Finally, we will descend down the software stack to C and discussmemory management as well as revisiting pointers, arrays,strings, and studying some data structures. We will then build ourown Unix applications that take advantage of system levelabstractions such as files and sockets through the use of systemcalls. All of this exploration will culminate in a multi-coreHTTP client.

Moreover, throughout the course, we will frequently reflect on the wisdomand power of the Unix Philosophy:

  1. Write programs that do one thing and do it well.

  2. Write programs to work together.

  3. Write programs to handle text streams, because that is a universal interface.

Each week there will be a Reading assignment meant to give you acontext and reference into what we will be covering that upcoming week anda Homework assignment that will provide you an opportunity apply thematerial in (hopefully) interesting ways. Of course, there are threeexams to assess your mastery of the material.

TL;DR

For this week, you need to read about using the command line and Git, andthen setup your GitHub repository. There is nothing to submit.

Readings

The readings for Friday, February 5 are:

    • Chapter 1 - What is the Shell?
    • Chapter 2 - Navigation
    • Chapter 3 - Exploring the System
    • Chapter 4 - Manipulating Files and Directories
    • Chapter 5 - Working With Commands

    • Chapter 1 - Getting Started
    • Chapter 2 - Git Basics
    • Chapter 3 - Git Branching

The focus of the readings is to review the basics of using the Unixshell, which most of you used in CSE 20311 Fundamentals of Computinglast semester, and to introduce you to Git, which we will be usingthroughout the semester.

In addition to reading the above chapters, it is recommended that you workthrough the following tutorials:

  1. This is a tutorial on using the command line interface on variousoperating systems (you should focus on the Unix shell).

  2. This is an interactive tutorial on branching in Git.

The Hands-on Imperative

Terminus Github StudentStudent

To get the most out of your reading, you should be typing commands intoa terminal and playing around with the things you reading.

Passively reading will not be as fruitful as actively reading andtrying out things you are exploring.

Additional Resources

The following are additional resources that you may find useful:

Unix Shell

Git

Tasks

Normally, you would have quiz to complete after each reading. For thisinitial reading, however, you only need do the following:

  1. Join the class Slack channel.

  2. Create your own private assignmentsGit repository on GitHub.

  3. Clone your private assignmentsGit repository to your localcomputer or a student machine.

Task 1: Slack

For communication outside of our meeting time, we will be using Slack,which is a real-time chat platform similar to Discord. Your first task isto create a ND-CSESlack account (if you have not done so already)and join the #cse-20289-sp21 channel:

Slack Channel

There is a class mailing list, but most day-to-day communication(including office hours and homework help) should take place on Slack.Therefore, you should check this channel regularly as it is the primarymeans of communication for the course.

Task 2: GitHub

All of your work in this class will be submitted to GitHub using git.Your second task is to setup your GitHubassignments repository by doingthe following:

  1. Sign-in or create a GitHub account if you do not already have one.

    You may associate this account with either your Notre Dame or personalemail address. It is up to you.

  2. Fork the class assignments repository from the following template:

    This will create a privatecse-20289-sp21-assignments-$USERNAMErepository under your own account and linked to the nd-cse-20289-sp21organization.

GitHub Repository

The assignments repository will be used for your individual readingand homework assignments. It must be kept private and only sharedwith the instructional staff.

Task 3: Student Machines

While you are free to use any machine you wish to do your work, thedepartment provides a set of student machines that you can login to anddo remote work in an environment crafted for the course. The followingsteps allow you to clone the assigments you just created to anymachine of your choosing.

  1. Clone your git repository to your local machine (or the student machines):

  2. Edit the README.md file in your assignments repository suchthat the Name and NetID fields are completed (i.e. replace 'DomerMcDomerson' and 'dmcdomer'). You should commit your change and thenpush them to GitHub.

Student Machines

As a reminder, students in this class have access to the followingstudent machines:

  • student00.cse.nd.edu
  • student01.cse.nd.edu
  • student02.cse.nd.edu
  • student05.cse.nd.edu
  • student06.cse.nd.edu
  • student10.cse.nd.edu
  • student11.cse.nd.edu
  • student12.cse.nd.edu
  • student13.cse.nd.edu

Terminus Github Student Edition

The following is a video demonstration of the process of cloning yourGitHub repository and committing your first change.

Tasks

Terminus Terminal App

Once you have setup Slack, GitHub, and have a working developmentenvironment on your local machine or on a student machine, then youhave completed all the necessary tasks for this reading assignment.