Presentation-Series-on-Git-and-Github

Table of Contents

Introduction

A Concise and Sufficient Series for All Beginning Developers

This presentation series aims to help introductory programming students get their work done in less time and with less pain by introducing them to the basics of software development ecosystem literacy. Students who watch this series will come out with sufficient working knowledge of Bash, Git, Github, and code organization tips focus maximal time on the advanced topics in their courses (rather than auxillary tools). Participants will be encouraged to ask their professors for help, join community discussions, apply what they have learned to their own projects. The success of this project will hinge on presenting the right concepts in the right order with sufficient detail in crystal clear fashion. For this reason, the presentation series shall be greatly shaped by the help of uncultivated minds of students in computer science, mathematics, physics, and all other data related studies.

If the resulting feedback is largely positive, the curator(s) will expand the scope of the presentation series to include more ubiquitious tools in software development. The series may include additional detail in subjects such as version control, code collaboration techniques, package/dependency management, task automation, and code modularization and organizaion.

On Contextual Knowledge

As is true for most disciplines, many elements in Git and the CS lingo are defined circularly and contextually. Without care, these words can actually do a great disservice to eager learners who inevitably find themselves going down rabit holes in search of a way to tether such words back to reality.

endless loop, n. See loop, endless.
loop, endless, n. See endless loop. // me === :(

In lesson crafting, strive to anchor each bit of new lingo to self-evident examples and objects. Rather than explaining the same concept in two or three different ways, you should show two or three examples of how they would use that concepts. Always consult with the newcomers before finalizing the script.


Topics

The Command Line Interface

1.1 Introduction to the Unix/Linux Shell (Bash)

Description: This is an interactive presentation. The Unix/Linux shell (or command shell, or terminal) is one of the (if not the single) most powerful POSIX compliant computing tools for automating repetitive tasks, supporting communication between computer programs, and performing all operating-system-level tasks. There are many shells available and this video will focus on the Bash Shell.

After watching this presentation, the student will be able perform the following simple tasks:

  • Explain in simple terms what a program is
  • Explain the importance of shells in accessing systems programs
  • Explain why the Bash shell is the ideal shell to master before going on to learn other shells
  • Build a simple shell program
  • How to navigate on your computer using the shell
  • How to view files and directories
  • Passing flags and arguments
  • How to create, copy, edit, and delete files and directories
  • How to save and re-use commands in shell scripts
  • Understanding Man pages
  • Links to additional resourses on shell customiziation, command line text editing, and more.

Please bring a computer with a shell or terminal installed. Linux and Mac usually have this by default, and Windows users will need to follow the instructions

1.2 Distributed Version Control Using Git