Skip to content

dominikb1888/GBAC

Repository files navigation

General Business and Accounting

This will be an unusual introduction to business and accounting. One targeted at future developers. We will start with you, because business starts with you. Let's understand many concepts of the business world by understanding how to use your computing environment in the most optimal way for you. This means understanding operating systems, shells, and customization options. We will be reflecting on efficiency, productivity and automation. Working our way up to the market, where you need to position yourself as a developer and compete with others. Building your personal profiles and understanding collaborative systems like Git and Github is key. Building and maintaining your digital identity by sharing learning and projects will help foster your personal development. Reflecting on this journey means looking at accounting and budgeting your personal business/brand. Join us for the most unusual journey into the business world. It all starts with you.

Structure

  • Lecture: CS concepts (60min):
  • Hands-on: C Programming Practice (60min) and OS customization (60 min)

Goals - Understand operating systems and take first steps as a developer

  • [] Understand the low levels of your operating system and how to program them in C
  • [] Know and use modern command-line tools
  • [] Setup and maintain your personal development environment

Student Blogs

As part of the course you will pick and conduct a personal automation project and write a blog about it. You will start using the C Programming language and get a low-level headstart into programming.

Student Blogs

Excercises

Join the C Language Track on Exercism to put your knowledge into practice. We will discuss exercises from Exercism every week: exercism.io

Lectures

  1. The Internal Language of Computers
  2. Combinatorial Logic
  3. Computer Anatomy
  4. Computer Architecture
  5. Communications Breakdown
  6. Organizing Data
  7. Language Processing
  8. The Web Browser
  9. Application and System Programming
  10. Shortcuts and Approximations
  11. Deadlocks and Race Conditions
  12. Security
  13. Machine Intelligence
  14. Real-World Considerations

Hands-on Exercises and Tutorials

1. From Metal to Digits

  • Booting an operating system
  • Computer Components and Architecture
  • The Linux Environment
  • Shell Commands
  • Text Editors

Tutorial: OS Install and Prompt customization with dotfiles

2. Programming in C - Getting started

  • The C programming environment
  • Variables and Data Types
  • Making Decisions

Tutorial:

3. Programming in C - Working with Data

  • Loops
  • Arrays
  • Strings and Text

Tutorial:

4. Programming C - Designing Programs

  • Pointers
  • Structuring Programs with Functions
  • Essential IO

Tutorial:

5. Programming C - Data Structures, Files, and Debugging

  • structs
  • files
  • preprocessing and debugging

Tutorial:

6. Processes and Threads

Tutorial: Monitoring processes and performance

7. POSIX standards and System Level APIs

Tutorial:

8. Files and File systems

  • Linux directory structure
  • Inode structure
  • File permissions
  • Soft and hard links

Tutorial: Creating directory level development environments

9. Memory, Process and Signals

  • Memory Layout
  • Environment Variables
  • Kernel support processes
  • Process creation
  • Signals

10. Interprocess Communication

Tutorial: Pipes, STDIN, STDOUT, STDERR

11. Shared Memory

  • Ownership, Borrowing and the Dangers of Sharing

12. Socket Programming

  • Introduction to network programming

13. Own Project: Design

14. Own Project: Implementation

15. Own Project: Feedback

Tutorials (agile as we go)

Command Line

Shell Customization and Dotfiles

Vim

Exploring new commands and tools

  • Neovim and Lunarvim
  • fzf (fuzzy finder)
  • grep/rg (ripgrep)
  • gh
  • jq
  • curl
  • awk
  • sed

Git and Github

Personal Blog:

  • Create Github Pages Blog: pages.github.com

Markdown, Pandoc, Latex

  • Latex
  • Transform Markdown into any Document with the Universal Document Converter: https://pandoc.org

Development environments and Deployment

Exam and Class Project

  • Reach out: Create blog on Github Pages.
  • Hands-on: Write at least 4 blog posts (1000 words each) on a self-chosen operating systems automation project
  • Iterate: Make sure there is at least one week between each post, try and engage as many classmates as possible to use and feedback on your automation and blog content.
  • Reflect: Feedback on both Automation Projects should be as specific as possible and in the form of Pull Requests.

Examples of interesting Tech Bloggers: