Course Code: lfd201
Duration: 35 hours
Prerequisites:

To make the most of this course, you will need to have:

  • Experience as a developer on any operating system
  • Experience in working at the command line is not necessary, but would be helpful
Overview:

Who Is It For

This course is for developers with experience working on any operating system who want to understand the basics of open source development. Experience with the command line is not necessary, but would be helpful.

What You’ll Learn

The course surveys how open source software works, including advantages of using it, methods of working in OSS communities, governance models and licensing choices. It delves into Linux systems, including installation, desktop environments, text editors, important commands and utilities, command shells and scripts, file systems and compiling software. It also provides a thorough introduction to Git, the source control system that arose out of the Linux kernel community, that enables widely distributed development to operate efficiently.

What It Prepares You For

This course will prepare you to work comfortably and productively in open source development communities and Linux environments. It shows you have mastered important Linux methods and requisite tools, can use Git to create new repositories or clone existing ones, commit new changes, review revision histories, examine differences with older versions, work with different branches, merge repositories, and work with a distributed development team.

Course Outline:

Chapter 1. Course Introduction

Chapter 2. Open Source Software (OSS)

Chapter 3. Why Use Open Source Software?

Chapter 4. Examples of Successful OSS Projects

Chapter 5. How to Work in OSS Projects

Chapter 6. Continuous Integration

Chapter 7. OSS Licensing and Legal Issues

Chapter 8. Leadership vs Control and Why Projects Fail

Chapter 9. Respecting and Encouraging Diversity in OSS

Chapter 10. GitHub and Other Hosting Providers

Chapter 11. Linux and the Operating System

Chapter 12. Graphical Environments and Interfaces

Chapter 13. System Administration

Chapter 14. Getting Help

Chapter 15. Text Editors

Chapter 16. Shells, bash, and the Command Line

Chapter 17. Filesystem Layout, Partitions, Paths and Links

Chapter 18. System Initialization

Chapter 19. Memory

Chapter 20. Networking

Chapter 21. Command Details

Chapter 22. Users and Groups

Chapter 23. Linux Filesystems

Chapter 24. Essential Command Line Tools

Chapter 25. Bash Scripting

Chapter 26. Files and Filesystems

Chapter 27. Compiling, Linking, and Libraries

Chapter 28. Java Installation and Environment

Chapter 29. Building RPM and Debian Packages

Chapter 30. Introduction to Git

Chapter 31. Git Installation

Chapter 32. Git and Revision Control Systems

Chapter 33. Using Git: An Example

Chapter 34. Git Concepts and Architecture

Chapter 35. Managing Files and the Index

Chapter 36. Commits

Chapter 37. Branches

Chapter 38. Diffs

Chapter 39. Merges

Chapter 40. Managing Local and Remote Repositories

Chapter 41. Using Patches

Chapter 42. Advanced Git Interfaces: Gerrit