Skip to content
Robert Millikin edited this page May 11, 2020 · 7 revisions

Welcome to the Learning-CSharp 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: objects (data storage, equality of objects); constructors pointers and memory; null pointers static vs instance variables

UNIT 4 - DATA STRUCTURES AND ALGORITHMS: 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 - PROJECT MANAGEMENT: 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

UNIT 6 - ADVANCED AND MISCELLANEOUS TOPICS linq parallelization and parallel debugging

  • race conditions, locks, lock contention
  • partitioning interfaces, abstract methods/classes inheritance
Clone this wiki locally