Skip to content
nbollis edited this page Oct 21, 2022 · 7 revisions

Welcome to the Learning C# wiki!

The following is an outline of the course content and will be updated (and links added) as the course develops.

UNIT 1 - THE BASICS

  • why code? the purpose of a program (automation of work)
  • CPU, RAM, and disk; time cost of storing/retrieving data from RAM vs. disk
  • input and output (from/to console, from/to disk)
  • storing data in primitive types (int, double, etc.)
  • conditionals (if/else, switch)
  • code flexibility, code readability/cleanliness, and bugs
    • code styles to strive for, patterns to avoid
  • methods and parameters
  • loops (for, while)
  • funny things about programming: integer math, min/max capacity of primitive types, etc.

UNIT 2 - DEBUGGING

  • printing to console
  • breakpoints
  • unit tests & assertions

UNIT 3 - OBJECT-ORIENTED PROGRAMMING [WIP]

  • objects (data storage, equality of objects); constructors
  • pointers and memory; null pointers
  • static vs instance variables

UNIT 4 - DATA STRUCTURES AND ALGORITHMS [WIP]

  • data structures (array, list; pros and cons, how to choose which to use)
  • algorithms and computational efficiency
    • formalism: O-notation
  • hashcodes (+hashsets, dictionaries)

UNIT 5 - ADVANCED AND MISCELLANEOUS TOPICS [WIP]

  • linq
  • try/catch/throw and exceptions
  • parallelization and parallel debugging
    • race conditions, locks, lock contention
    • partitioning
  • interfaces, abstract methods/classes
  • inheritance

UNIT 6 - PROJECT MANAGEMENT [WIP]

  • team-based programming on large, persistent projects
  • github - cloning, forks, branches, pull requests, merge conflicts, code review
  • libraries and nuget packages
  • memory management and garbage collection
  • performance (CPU, RAM) profiling
  • unit tests and code coverage
  • continuous integration
  • Docker & containerization
Clone this wiki locally