1
00:00:01,060 --> 00:00:07,390
OK, so just in case that first little introduction wasn't enough to convince you to take the course.

2
00:00:07,870 --> 00:00:13,120
I wanted to go over another little slide show that talks a little bit more in detail about what the

3
00:00:13,120 --> 00:00:14,650
course has to offer.

4
00:00:16,940 --> 00:00:23,360
So once again, we don't assume anything discourse can be useful for someone who has no programming

5
00:00:23,360 --> 00:00:28,820
experience at all, never written a line of code in their life or for experienced developers who do

6
00:00:28,820 --> 00:00:29,810
know how to write code.

7
00:00:30,080 --> 00:00:33,950
They do know about object oriented programming and even some data structures and algorithms.

8
00:00:34,130 --> 00:00:38,960
But maybe they forget some important concepts that they want to brush up on for an interview that could

9
00:00:38,960 --> 00:00:44,300
be anything like dynamic programming, certain tree traversal algorithms, graph traversal algorithms,

10
00:00:44,300 --> 00:00:49,190
or maybe proving time complexity talking about Big O space complexity, things like that.

11
00:00:50,150 --> 00:00:51,410
So it's really for anyone.

12
00:00:52,870 --> 00:00:57,850
We also try not to leave anything out, so we don't only want to just have a course about writing code.

13
00:00:58,090 --> 00:01:00,700
We also don't want to just talk about data structures and algorithms.

14
00:01:00,730 --> 00:01:02,560
We want you to know what's going on behind the scenes.

15
00:01:02,920 --> 00:01:07,480
So because of this, we talk about things like the compiler.

16
00:01:07,840 --> 00:01:10,290
We talk about multiple debugger options.

17
00:01:10,330 --> 00:01:15,700
So if you want to use a command line based debugger like GDB, we'll go over that.

18
00:01:15,970 --> 00:01:20,620
We'll also go over an I.D., I.D. debugger like seamless debugger.

19
00:01:21,340 --> 00:01:26,890
We will go over the binary and hexadecimal and even octal number systems so we can give you a solid

20
00:01:26,890 --> 00:01:29,650
computer science base before you start programming.

21
00:01:30,400 --> 00:01:33,730
And then we'll talk about some text editors, Mercedes as well.

22
00:01:33,740 --> 00:01:36,900
So if you don't want to use some big, high gloss idea, you do not have to.

23
00:01:36,910 --> 00:01:43,330
You can use a basic text editor like sublime text or voice code or atom, whatever you prefer.

24
00:01:43,780 --> 00:01:49,270
And we'll even mention some things like maybe them or Emacs that you can use in the command line.

25
00:01:50,470 --> 00:01:55,810
We'll talk about the command line fundamentals as well, so we'll open up bash and talk about navigating

26
00:01:55,810 --> 00:02:01,480
the terminal and stuff like that, changing directories and, of course, compiling C++ code because

27
00:02:01,480 --> 00:02:07,630
this course will be taught primarily in C++, and then we'll talk about computer memory layout as well.

28
00:02:07,780 --> 00:02:12,370
It's not going to be a course completely on operating systems or anything like that, not talking about

29
00:02:12,550 --> 00:02:15,130
page tables and all that good stuff.

30
00:02:15,130 --> 00:02:17,610
But we will talk about Stacks.

31
00:02:18,400 --> 00:02:24,040
You know, the call stack and the heap and stuff like that, and just virtual memory in general as well.

32
00:02:26,320 --> 00:02:29,500
So we're often going to try to explain things in layman's terms.

33
00:02:29,860 --> 00:02:35,800
So are there technical jargon is important for precisely explaining many concepts and we will go over

34
00:02:35,800 --> 00:02:36,340
that as well.

35
00:02:36,700 --> 00:02:42,950
We're going to first try and explain everything in a non-technical way in order to help it not go over

36
00:02:42,970 --> 00:02:43,990
certain students heads.

37
00:02:43,990 --> 00:02:48,490
So students who might not have a technical background can better understand the concept.

38
00:02:48,490 --> 00:02:49,780
So like that first slide?

39
00:02:50,140 --> 00:02:55,970
We don't really assume anything about your technical background, so we're going to try and explain

40
00:02:55,970 --> 00:03:02,740
it in as much detail as possible and try not to use any terminology that you might not know unless we've

41
00:03:02,740 --> 00:03:04,000
already introduced that.

42
00:03:04,010 --> 00:03:05,140
So that is the goal.

43
00:03:07,270 --> 00:03:11,650
So a high level overview of the course, we're going to start out with some fundamental things, so

44
00:03:11,650 --> 00:03:17,020
that was like that binary and hex stuff that I was talking about to make a solid base for the programming

45
00:03:17,020 --> 00:03:17,440
portion.

46
00:03:17,950 --> 00:03:20,050
After that, the course has two main sections.

47
00:03:20,050 --> 00:03:26,950
They're both taught using the C++ language, and that is a programming section and a data structures

48
00:03:26,950 --> 00:03:27,880
and algorithms section.

49
00:03:29,530 --> 00:03:33,620
So to break those two sections down, the programming section starts out with the fundamentals.

50
00:03:33,640 --> 00:03:40,330
So we're talking like just primitive data types, functions, arrays, strings.

51
00:03:41,140 --> 00:03:47,920
Then we'll get into just adding it all together with loops and things to and have some procedural program

52
00:03:47,920 --> 00:03:48,460
at that point.

53
00:03:48,880 --> 00:03:52,540
And then we'll talk about the object oriented programming paradigm.

54
00:03:52,540 --> 00:03:57,850
So that will be like once we introduce classes, template instructs, things like that.

55
00:03:58,060 --> 00:04:03,160
We'll go over polymorphism inheritance and encapsulation in the second section.

56
00:04:03,160 --> 00:04:05,100
It's all of our data structures and our rhythms.

57
00:04:05,140 --> 00:04:13,960
So we start off with some basic things like and lists, and then we go over an introduction to pick

58
00:04:13,960 --> 00:04:21,790
own notation so you can at least just have a means to do a kind of informal analysis of the algorithms

59
00:04:21,790 --> 00:04:23,770
that you go over in the rest of the course.

60
00:04:24,490 --> 00:04:29,110
And then we will get into all of the essential data structures and algorithms.

61
00:04:29,110 --> 00:04:38,260
So Tres Stacks Cuz keeps graphs traversing these graphs and trees.

62
00:04:39,340 --> 00:04:43,280
And then after that, we will get into a more formal algorithm analysis.

63
00:04:43,280 --> 00:04:48,610
So we'll be doing things like recurrence, relations and summations to more formally proven time complexity.

64
00:04:49,510 --> 00:04:53,100
And then also capping it off with some algorithmic design strategies.

65
00:04:53,100 --> 00:04:59,020
So this is where we get into a what's considered to be a little more difficult topic in algorithms and

66
00:04:59,230 --> 00:05:02,070
interviews, which is dynamic programming.

67
00:05:02,080 --> 00:05:05,140
And we will talk about that versus the greedy method and things like that.

68
00:05:07,260 --> 00:05:11,970
So why do we use C++ might be thinking, well, you know, I want to be a web developer, I want to

69
00:05:11,970 --> 00:05:19,350
use JavaScript and Python, and maybe I won't use Java or C sharp stuff like that.

70
00:05:19,350 --> 00:05:25,020
And all these languages are great, but C++ is a really useful language for teaching important computer

71
00:05:25,020 --> 00:05:25,710
science topics.

72
00:05:26,670 --> 00:05:32,370
So although many do consider it to be a fairly high level language, it also allows for a slightly lower

73
00:05:32,370 --> 00:05:34,420
level programming experience, if desired.

74
00:05:34,440 --> 00:05:39,660
Remember, it is based off the sea language, so we can actually do some slightly lower level stuff

75
00:05:39,660 --> 00:05:45,210
too, and start getting to think more about, you know, computer memory and managing it like that and

76
00:05:45,210 --> 00:05:46,800
using pointers and things like that.

77
00:05:47,190 --> 00:05:48,240
So it's very useful.

78
00:05:48,780 --> 00:05:53,280
It's also not necessarily a purely object oriented programming language like Java, but we can, of

79
00:05:53,280 --> 00:05:55,860
course, still do object oriented programming C++.

80
00:05:55,860 --> 00:06:01,230
So it's really a great kind of jack of all trades language for learning, computer science and programming

81
00:06:01,260 --> 00:06:05,900
topics because you can have a more fine grained level control or C++.

82
00:06:05,910 --> 00:06:10,920
It is often used for a lot of engineering applications that require a lot of precision and speed.

83
00:06:10,950 --> 00:06:17,220
So things like in the aerospace sector and industrial control systems, devices, things like that,

84
00:06:18,090 --> 00:06:19,590
but it's not limited to that.

85
00:06:21,080 --> 00:06:25,460
You know, some people might say, OK, well, yeah, it also is used in like game engines and things

86
00:06:25,460 --> 00:06:26,630
like that, which is true.

87
00:06:26,640 --> 00:06:29,920
That's a big part of C++, but it's also useful.

88
00:06:29,930 --> 00:06:31,910
It has a very broad range of applications.

89
00:06:31,910 --> 00:06:38,200
You can really use it for a ton of stuff, and it's a great language to use to transition to other languages.

90
00:06:38,210 --> 00:06:42,920
Once you understand C++, I guarantee you can go ahead and pick up other languages very easily, like

91
00:06:42,920 --> 00:06:46,010
Python if you want to pick that up, JavaScript.

92
00:06:47,590 --> 00:06:48,980
You know, C-sharp Java.

93
00:06:49,370 --> 00:06:55,430
All those will be very much like a lot easier to do than starting out with C++.

94
00:06:55,710 --> 00:06:58,020
You will be able to transition quite easily.

95
00:06:58,040 --> 00:07:02,540
And so if you're thinking, Hey, I just want to be a web developer, I don't necessarily need to use

96
00:07:02,540 --> 00:07:03,080
any of this.

97
00:07:03,470 --> 00:07:08,600
It still is a great course because everyone that programs should know about these important programming

98
00:07:08,600 --> 00:07:13,460
concepts and doing it in C++ will give you a lot of skill as a programmer.

99
00:07:13,460 --> 00:07:18,440
And of course, regardless of all that, data structures and algorithms are going to be helpful on their

100
00:07:18,440 --> 00:07:22,730
own for all sorts of programming things, especially if you're going to do interviews with like phone

101
00:07:22,730 --> 00:07:27,470
companies or any larger companies that really require a lot of like typing and whiteboarding of hard

102
00:07:27,470 --> 00:07:29,180
problems in their interviews.

103
00:07:29,180 --> 00:07:33,260
You know where you would need to practice Lee Code and hacker rank and stuff like that.

104
00:07:33,470 --> 00:07:34,820
You know, data structures now rhythms.

105
00:07:34,820 --> 00:07:35,810
That's what that's all about.

106
00:07:38,250 --> 00:07:39,820
So how should you take this course?

107
00:07:39,840 --> 00:07:44,730
You can take it with whatever paste you would like, but it is good if you don't let too much time elapse

108
00:07:44,730 --> 00:07:48,960
between the lectures and coding practice to make sure that you are really maintaining and absorbing

109
00:07:48,960 --> 00:07:49,770
all this knowledge.

110
00:07:50,430 --> 00:07:52,690
Programming takes a lot of practice and dedication.

111
00:07:52,710 --> 00:07:56,100
There's a ton of information to know and to learn about this.

112
00:07:56,100 --> 00:07:59,910
In fact, you could just keep learning your entire life, and I feel like you wouldn't even touch the

113
00:07:59,910 --> 00:08:02,010
tip of the iceberg with a lot of programming stuff.

114
00:08:03,350 --> 00:08:11,300
So it may seem daunting at first, and if you encounter a wall, just remember that, you know, we

115
00:08:11,300 --> 00:08:13,820
believe everyone is capable if they have the drive to succeed.

116
00:08:13,830 --> 00:08:17,450
So if you are struggling, it doesn't mean that you don't belong here.

117
00:08:17,450 --> 00:08:22,930
It doesn't mean that you're not a technical person or that you are not going to be a good program.

118
00:08:23,570 --> 00:08:28,010
You just need to keep practicing and with practice, you'll get perfect, just like many other topics.

119
00:08:28,820 --> 00:08:33,710
So if you have a drive to succeed in this course, then it will be a great course for you and you will

120
00:08:33,710 --> 00:08:39,170
be able to use it and you'll be able to feel confident in job interviews and get whatever you're really

121
00:08:39,170 --> 00:08:40,560
trying to get out of this course.

122
00:08:40,580 --> 00:08:41,630
So just keep that in mind.

123
00:08:43,320 --> 00:08:45,610
So with that, that's really all I have to say.

124
00:08:45,630 --> 00:08:49,330
So hopefully, if you are on the fence, this helped you decide whether you want to take the course.

125
00:08:49,350 --> 00:08:52,080
If so, then I will see you in the upcoming lectures.
