The course is happening thanks to:
Тема | Слайдове | Допълнителни материали за четене |
---|---|---|
Уводно видео за поредицата | Цък. | В презентацията. |
Сложност на алгоритми | Цък. | В презентацията. |
Интуиция за структури от данни | Цък. | Java: what's the big-O time of declaring an array of size n? |
Week | Date | Tasks | Presentation |
---|---|---|---|
1 | Monday - 08.06 | Tasks for week1 | Presentation for week1 |
2 | Monday - 15.06 | Tasks for week2 | Presentation for week2 about OOP |
2 | Wednesday - 17.06 | Tasks for week2 | Presentation for week2 about OOP |
2 | Saturday - 20.06 | Tasks for week2 | OOP Recap |
3 | Monday - 22.06 | Tasks for week3 | OOP and Array Recap |
3 | Wednesday - 24.06 | Tasks for week3 | Vectors |
4 | Monday - 29.06 | Tasks for week4 | Generic Types |
5 | Monday - 06.07 | Tasks for week5 | Linked List |
6 | Monday - 13.07 | Tasks for week6 | |
7 | Monday - 20.07 | Tasks for week7 | Interfaces and Polymorphysm |
8 | Monday - 27.07 | Tasks for week8 | Balanced Search Tree |
This course comes after Programming0 and before Programming 101. Hence - 51! This will be about OOP & Data Structures.
The language of choice is going to be Java. The reason here is simple - Python's OOP contains too much magic for a beginner to handle. So we are going to use the clasiccal approach with Java!
In order to understand that course, please check:
Here is a high-level overview of the program - what we are going to cover and use in this course:
- Get familiar with Java - we are going to compare Java with the things we know in Python so far. We are going to talk about types, arrays, IDE, Java Virtual Machine,
public static void main
, etc. - Solve some problems with Java - we are going to revisit some of the problems from Programming 0 and resolve them with Java.
- Introducing OOP. Here, the fun begins. We are going to talk about why does OOP exists, what is the philosophy there and how can we achieve things in Java, using classes, encapsulating data and learning about interfaces and polymorphism.
- Introducing Abstract Data Structures & starting to think with interfaces. We are going to start with linear data structures
- We are going to implement our first data structure - a
Vector
- a self-resizable array. After this, we are going to implementLinkedList
- again, a self-resizable list. - After this, we are going to do
Queue
andStack
, using our previous data structures. We are going to solve a lot of problems involving queues and stacks ;) - To merge things, we are going to implement a
Deque
- something that behaves like aQueue
and aStack
! - Making our way towards non-linear data structures, we are going to implement a mathematical
Set
data structure, the naive way. - After this, we are going to jump right into
Trees
, making different kind of search trees -BinarySearchTree
andTrie
. - After the trees, are are going to take a look into
Graphs
- how to implement them and what are the basics algorithms that we can run there. - And to finish the course, we are going to revisit some of the data structures, and implement them better, with the latest knowledge we have.
Also, we are going to cover some of the concepts from the Java language:
- Exceptions
- Generics
- Input / Output