Classes


A class is group of online meetings between one teacher and one or more students. These meetings consists of a combination of

  • teacher instruction
  • teacher demonstration
  • student practice
  • sharing of ideas and questions among students and teacher

The purpose of course is to increase the student’s skill level and understanding in the topics of the class.

But the classes here at Nyansa Dua are different from many online courses in that the student has a knowledgeable expert that they can ask specific questions to. Their questions can be asked live during the session or by email outside of the session. This gives the student the opportunity to really master the topics of the class.


Topics


  • Overview (Computers, Programming, and Java)
  • Variables, Assignment, and Types (Simple Types and Strings)
  • Basic I/O (System.out and Scanner)
  • Branching (if-else, relational operators, logical operators, and switch)
  • Looping (for, forEach, while, do while)
  • Methods (fixed parameters, variable number of parameters, return type, overloading, pass by value)
  • String Operations
  • StringBuilder
  • Operators (++, –, +=, -=, *=, /=, %)
  • Classes, Objects, and Constructors
  • static, this, final
  • import
  • Testing
  • enum
  • Naming Conventions and Coding Conventions
  • Arrays and ArrayLists
  • Math Operations
  • File Processing
  • Exceptions and try-catch

Topics


  • Packages and Modules
  • Inheritance and Polymorphism
  • Abstract Classes and Interfaces
  • super, this
  • Casting
  • Boxing and Unboxing
  • Problem Decomposition and Pseudo-code
  • Access Modifiers
  • finally
  • Jumping (break and continue)
  • Operators (tertiary operator, bitwise operators)
  • Version Control – Git
  • Multidimensional Arrays and Jagged Arrays
  • Generics
  • HashMap and HashSet
  • Stack and Queue
  • Linked List
  • Iterator
  • Object Cloning
  • Serialization
  • Random Number Generators
  • Object Design

Topics


  • Binary Tree
  • Iterative Algorithms
  • Recursive Algorithms
  • Lambda Expressions
  • Regular Expressions
  • record
  • Observer Pattern and Event Driven Programming
  • GUI
  • Nested Types
  • Type Parameter Constraints
  • Threads, Processes, Synchronization, Asynchronization, Concurrency, and Parallelism
  • Socket Programming
  • NIO
  • Design Patterns (State, Command, Factory, Strategy, Adapter, Composite)
  • Reflection
  • Java Virtual Machine
  • Garbage Collection

Topics


  • Overview (Computers, Programming, and C#)
  • Variables, Assignment, and Types (Simple Types and Strings)
  • Properties
  • Basic I/O (reading from and writing to console)
  • Branching (if-else, relational operators, logical operators, and switch)
  • Looping (for, forEach, while, do while)
  • Top Level Statement
  • Methods (fixed parameters, variable number of parameters, named parameters, return type, overloading, in, out, ref)
  • String Operations
  • String Builder
  • Interpolated String and Verbatim String
  • Operators (++, –, +=, -=, *=, /=, %)
  • Classes, Objects, Object Initializers, and Constructors
  • static, this, final
  • import, using
  • Testing
  • enum
  • Naming Conventions and Coding Conventions
  • Arrays and Lists
  • Math Operations
  • File Processing
  • Exceptions and try-catch

Topics


  • Name Space and Assembly
  • Inheritance and Polymorphism
  • Abstract Classes and Interfaces
  • super, this
  • Casting
  • Boxing and Unboxing
  • Nullable Types
  • Problem Decomposition and Pseudo-code
  • Access Modifiers
  • finally
  • Destructor
  • Jumping (break and continue)
  • Operators (tertiary operator, bitwise operators)
  • Version Control – Git
  • Multidimensional Arrays
  • Jagged Arrays
  • Generics
  • Dictionary and HashSet
  • Stack and Queue
  • Linked List
  • Iterator
  • Object Cloning
  • Serialization
  • Random Number Generators
  • Object Design

Topics


  • Binary Tree
  • Iterative Algorithms
  • Recursion Algorithms
  • Lambda Expressions
  • Regular Expressions
  • record, struct, Tuple
  • .Net
  • Extension Methods
  • LINQ
  • Anonymous Types
  • Delegates
  • Observer Pattern and Event Driven Programming
  • Partial Classes
  • GUI
  • Nested Types
  • Type Parameter Constraints
  • Threads, Processes, Synchronization, Asynchronization, Concurrency, and Parallelism
  • Socket Programming
  • Design Patterns (State, Command, Factory, Strategy, Adapter, Composite)
  • Reflection
  • Garbage Collection

Topics


  • Arrays and Lists
  • Time and Space Complexity Analysis
  • Linked Lists
  • Dictionaries, Sets, Bloom Filters (Hash Functions, Collision Handling, 2 Integer Sum Problem)
  • Iterative Process vs Recursive Process
  • Sorting
  • Searching (Finding the i’th Order Statistic)
  • Stacks (Depth First Search)
  • Queues (Breadth First Search)
  • Trees (BST, Heaps, Median Maintenance)
  • Graphs (Adjacency List, Adjacency Matrix, Minimum #of Hops, Connected Components, Topological Sort, Strongly Connected Components)
  • Divide and Conquer Algorithms (Binary Search, Merge Sort, Quick Sort, Towers of Hanoi, Closest Pair)
  • Greedy Algorithms (Minimal # of Coins, Fractional Snapsack, Kruskal’s MST, Prim’s MST, Dijkstra’s Shortest Weighted Path, Job Sequencing, Huffman Coding, Max Flow Problem, Least Recently Used Page Replacement)

Topics


  • Union Find
  • Skip Lists
  • Balanced Trees (AVL, Red-Black, Splay, 2-3-4 Trees, B-Trees, Treap),
  • Amortized Analysis
  • Augmented BST
  • Dynamic Programming (0\1 Snapsack, Longest Common Subsequence, Partition Problem, Count Derangements, Floyd Warshall, Bellman–Ford)
  • Randomized Algorithms (QuickSort, Minimum Cut)
  • Backtracking (8 Queens, Crossword Puzzle, Sudoku)
  • Tries
  • String Processing
  • P, NP, NP-Complete, NP-Hard (Bin Packing, Graph Coloring, K-Centers)