Hello and welcome to the C for Beginners programming class.
My name is Jason Fitton and I will be your instructor.
I want to thank you for signing up for this course.
It's going to be a ton of fun and I'm going to do my best to motivate you and help you learn all about
the C programming language.
Let's get started.
First, I want to tell you a little bit about myself.
I have a master's of science in computer science from Binghamton University, and I also have a bachelor's
of science and in computer science from SUNY Oswego.
I received my master's in 2001.
I've been a software developer for over 16 years.
I've been an online instructor for over 11 years.
I've instructed over 20 different classes, ranging from everything from object oriented programming
to compiler theory.
I have a vast amount of experience with programming in computer science in general.
I've been working with the C programming language for over 16 years.
Basically, as soon as I got my first job, I started writing C code.
I've also created beginner C and advanced C classes at multiple universities, so I have a good amount
of experience with curriculum and presenting C concepts to students.
I've been a software developer at Xerox Corporation for around 10 to 12 years.
While I've been working here I have been writing C code mainly and also some C plus plus code.
We run our entire source code repository on the Linux platform and we write real time code.
I mainly concentrate on object oriented languages and mobile programming.
This is what I love to do.
So things like C plus Plus and Java, but the C language is really what I have my expertise in.
I also focus on writing high quality code.
This is a vital, important concept that I'm going to emphasize throughout the course.
I want you guys to focus on writing good code, not just writing code that works, but writing good
code that will help the maintenance of the program be much easier.
So some of the topics we're going to cover in the class include the following.
And by the way, when we cover these topics, we're going to provide.
I'm going to provide lecture material.
I'm going to provide hands on exercises.
I'm going to provide assessments.
I'm going to walk you through code and programming concepts as I'm editing it in an integrated development
environment.
So it's going to be really hands on.
We're first going to talk about C in general, give you a little overview of it.
I'm going to tell you how the C programming language is very efficient.
It's also portable.
You can write it across multiple platforms.
It has a lot of power and flexibility, and it's programmer oriented.
I also provide you a short history of C, just to give some context.
We'll follow that up by describing some of the common language features of C.
C is an imperative language.
This is the most modern type of language.
It's organized around functions.
It has module design, it's a structured programming language.
And you can also have top down planning when you're writing your code.
The advantages of using C will focus on C is great for small, fast programs.
It's very reliable, very easy to learn and very easy to understand.
If you were to take a C program from a fellow peer or fellow developer, you'll be able to follow it
pretty quickly.
We're going to use a modern cross-platform integrated development environment.
We're going to edit code.
We're going to also use the IDE to debug our code, which is very important.
And so this will be presented as one of the concepts.
I'll kind of walk you through the environment and show you how to use the tool.
We're first going to start off with basic concepts.
I'm going to describe to you what a C program looks like and give you an example.
I'm going to show you the structure of a basic C program.
We'll talk about how you can provide comments in your code and also basic output using the printf function.
We'll go through a Hello World example and also have you write your first program in C.
We'll follow that up with talking about makefiles.
We won't go into a lot of details about makefiles, but I want to touch on it to help you understand
how you can use this tool to build and compile your code.
We're going to talk about the most basic programming concept there is, which is creating and using
variables.
Variables is the idea of associating memory, data and memory for your program with a name.
And you're going to create many variables and many different statements in your code.
We'll talk about data types, which includes the float double and char data types.
And then later in the class we'll talk about more advanced data types like enums and then providing
your own data types by using a typedef keyword.
I'll provide information on basic operators.
These are things like doing addition or subtraction, math operators.
It also includes logical operators like and or, or.
This would be in kind of like decision statements.
We'll talk about how you can assign data to a variable using an assignment operator.
Making decisions in your code.
Very important programming concept.
We'll touch on this.
These are called conditional statements.
These are keywords like if and switch.
We'll provide examples and go through the various constructs of this.
Follow that up with talking about repeating code.
Mainly looping the big looping constructs in C are for while and do while.
They're all the same.
They're just a little different syntax.
We're going to talk about how you can store data and categorize data two different using arrays.
So we'll discuss how you can define initialize arrays and then multi-dimensional arrays, which is kind
of like a matrix spreadsheet type of concept.
Functions.
Functions are one of the biggest, most important concepts related to the C programming language.
Everything shouldn't be should be used and organized around a function.
This is referred to as module type programming.
You're going to learn how to declare a function, how to use it, how to pass data to it, how to return
data from it.
We'll also talk about more advanced concepts like call by value and call by reference Debugging.
Debugging is a vital concept and essential for all programmers.
It's this idea of finding and fixing your errors.
We're going to discuss the call stack, which can show you if your program crashes where it crashed.
Very important concept.
I'll provide you with common mistakes that many c programmers make so that if you do see these mistakes,
you understand how to fix them.
And then the compiler, the compiler will check your code to make sure it's syntactically correct.
And if it's not, it will give you error messages or warnings.
You need to understand what the compiler is telling you.
So we'll talk about the compiler messages and how to understand them.
We're going to discuss structs.
You're going to learn all about structs, which is similar in arrays and that it stores data.
It's a data structure.
We're going to discuss how you can initialize structs, how there's this concept of nested structures.
For those of you that are familiar with objects, it can be kind of relatable to that, but is not as
robust character strings, which is essentially a string in C alphanumeric characters inside double
quotes.
This is one of the basic data types, but it's thought of as an array and see it's a little different
concept.
We're going to go through that.
We're going to talk about some of the operations you can perform on strings and so forth.
Pointers.
Pointers are probably going to be our most important concept in this entire course.
So we're going to spend a lot of time on it.
Pointers is this concept and see where you have to manage your own memory.
It may be a non familiar concept to you if you program it in other languages because this is usually
done for you.
Specifically, if you program Java or C sharp, you don't have to worry about pointers.
In C, you have to worry about managing your own memory.
So pointers are a big deal.
I'm going to tell you how you can define and use pointers, how you can use them with functions and
arrays, how you can call different standard library calls to create memory and also how you can dereference
pointers.
It is an important concept, like I said, and we're going to spend a lot of time on this.
I'm going to provide you with a lot of examples, a lot of real world type scenarios so that pointers
are really driven into your brain because you can't use the C programming language without fully understanding
pointers.
We'll spend a lot of time on this.
The preprocessor we're going to learn about this is a step that happens before the compiler.
Specifically, They're directives that you need to understand, like define and include.
We'll go through that.
We're going to go through input and output, how you can read and write data to the console.
We've talked about printf.
We're going to go in a little more detail into that by using getchar and scanf format, specifiers,
things like that.
We're also going to talk about how you can read and write data to a file.
This is another sort of important concept when you're writing code, it's a way of storing data.
There are many different file operations in C, and we're going to discuss some of those.
C is a very low level language and that it can do a lot of things efficiently and fast and file writing
and reading is at that low level.
You can interact with the operating system pretty, pretty nicely.
There's a standard C library that comes with the C programming language where there's a lot of different
functions that you can utilize.
There's string functions, string manipulation functions, there's math functions, utility functions.
We're going to go through all of these basic functions that you can use that help you write code more
efficiently, just like different libraries and other languages.
C is going to provide you with some of the basics again, in order to write and read from files manipulating
strings.
If you want to get cosine and tangent for math functions, that's all provided for you by the language.
We're going to learn about that.
And those are the main topics that we're going to cover, beginning topics.
We're not going to go into any advanced topics yet, but we're going to cover the basics fundamentals.
So at the end of this course, you should be able to write beginner C programs, understand the fundamental
aspects of the C language, know how to provide input and output.
Do file i o drill down the concept of pointers, etcetera.
You're also going to, as we go through this course, focus on writing high quality code efficient code.
This is very, very important.
Again, it affects the maintenance phases of software life cycle.
So if you want to find and fix your errors, it's much easier to do that if you have high quality code.
So as we go through examples, as we learn this concepts, we're going to learn how to do it the right
way.
We're going to learn how to make things modularized so that things are grouped into functions.
We're going to make sure that in our different files we have low dependencies, low coupling, so that
they don't affect one another.
When you have a lot of dependencies in your code, you can.
It's much easier to find and fix your bugs.
And if you ever want to add new functions or add new code to a program, it's much easier to do that
if it's modularized, if it's organized function.
So we're going to focus on this concept of writing high quality code.
We're not just going to get things to work, we're going to do it the right way.
At the end of the course, you'll be able to find and fix your own errors.
An essential part of becoming a good programmer is problem solving.
We're going to focus on problem solving techniques and how to debug your code and how for you to become
an efficient problem solver.
This includes understanding the compiler messages.
It understands how to run a debugger, how to use the call stack, all these nice things.
Problem solving is going to be drilled in all lectures.
You're going to understand the fundamental aspects of the C programming language topics I mentioned
previously.
This is going to be basic C stuff.
Lastly, you're going to have fun.
I'm going to do my best to motivate you.
I'm going to have fun and exciting examples.
I don't want you to fall asleep during lectures or exercises, so I'm going to make them lively and
I'm going to do my best to motivate you and help you throughout this course.
So I'm looking forward to it.
I'm really excited and I hope everybody is ready to learn a lot about the C programming language.
Thank you.