Topic 4 – Object-Oriented Programming

Why do I need to know an object-oriented programming language?

Because most of modern applications are written using an object-oriented programming language. Using an object-oriented programming language as a tool will save you a lot of time and cost when you create a modern application.

Alright! What should I do now?

Please read this "Jim Keogh and Mario Giannini (2004). OOP Demystified" book.

Is that all?

Unfortunately, the book is not sufficient although it already gives you the fundamental concepts of object-oriented programming. The book does not teach you how to create real world applications using an object-oriented programming language.

We recommend that you read it first because it introduces basic concepts of object-oriented programming very well. It helps you to distinguish object-oriented concepts from procedural programing concepts very clearly so that you could read other books to dig into object-oriented programming in a right way.

Please read this "RB Whitaker (2015). The C# Player's Guide" book to understand how to use object-oriented concepts to create real world software using a specific object-oriented programming language.

After that please get 
- this "Joseph Albahari and Ben Albahari (2015). C# 6.0 in a Nutshell: The Definitive Reference" book or 
- this "Herbert Schildt (2010). C# 4.0 The Complete Reference." book and 
take a quick look at them so that you can refer to specific topics when creating real world applications.

I hear that there are many object-oriented programming languages such as C++, C#, Java, PHP, Objective-C, Swift, Python, Ruby, etc. How many object-oriented programming languages should I know?

As many as possible. However, in this stage, you can learn only C# or Java or C++.
- If you are required or prefer to learn C++, please read this "Bjarne Stroustrup (2013). The C++ Programming Language" book.
- If you are required or prefer to learn Java, please read this "Herbert Schildt (2014). Java: The Complete Reference" book.

Then if you are interested in in-depth object-oriented concepts then please read 
- this "Matt Weisfeld (2013). The Object-Oriented Thought Process" book and 
- this "Bertrand Meyer (1997). Object-Oriented Software Construction" book and 
- this "Grady Booch et al. (2007). Object-Oriented Analysis and Design with Applications" book.
They will help you understand the object-oriented concepts more deeply.

After finishing the books please click Topic 5 - Introduction to Windows Programming to continue.

 

Topic 3 – Introduction to Algorithms and Data Structures

Why do I need to learn algorithms and data structures?

Your software must solve real-world problems. Knowing a  programming language does help you to write software but it does not help you to reuse the existing solutions to save your time and effort when creating a software system.
Many real world problems were already solved and the solutions were documented as algorithms and data structures.

You need to learn them so that you will not reinvent the wheel and can apply them to solve your specific problems to reduce your time and effort.

What can I do after finishing learning algorithms and data structures?

You will be able to write a program to tell a computer
- to store and search for something.
- to sort something for you.
- to encrypt or decrypt sensitive information for you.
Given some programs, you will be able to tell which one will run faster when looking at their code.

That sounds useful! How can I learn algorithms and data structures?

Please get this "Thomas H. Cormen et al. (2009). Introduction to Algorithms" book and read it. If you do not have much time then you do not need to read the whole book. Please just select some interesting problems and read them.
After finishing the book please click Topic 4 - Object-Oriented Programming to continue.

Topic 2 – Introduction to Programming

Why do I need to know a programming language?

Because you will develop your software using a programming language. A programming language is a language that both you and a computer will understand. It's a tool for you to express what you want a computer to do. It's a tool for you to write instructions of your computer programs. Without knowledge of a programming language, you cannot develop any software.

I hear about many programming languages such as C, C++, C#, Java, JavaScript, Kotlin, PHP, Objective-C, Swift, Ruby, Python etc. How many programming languages should I know?

As many as possible. However, at this stage, you should learn about structure of a computer program and a procedure language (e.g. C or C++) first.

What should I do now?

Please read this "Stephen Prata (2011). C Primer Plus" book.
Alternatively, you can read from Chapter 1 to Chapter 9 of this "Stephen Prata (2011). C++ Primer Plus" book.

Alternatively, you can read from Chapter 1 to Chapter 9 of this "John M. Zelle (2017). Python Programming - An Introduction to Computer Science. 3rd Edition" book.

Alternatively, you can read from Chapter 1 to Chapter 11 of this "Charles Severance (2013). Python for Informatics: Exploring Information" book.

Alternatively, you can read from Chapter 1 to Chapter 11 of this "Chris Pine (2013). Learn to Program (The Facets of Ruby Series)" book.
If you want to get more sophisticated concepts of programming then please read this "Harold Abelson et al. (1996). Structure and Interpretation of Computer Programs" book.
After finishing the books please click Topic 3 - Introduction to Algorithms and Data Structures to continue.

Topic 1 – Operating Systems

Why do I need to know how to USE an operating system?

Because you will develop your software using an operating system or for an operating system.

How many operating systems should I know?

As many as possible. We recommend that you learn how to work with Windows first.

How do I learn about operating systems under a user’s view?

Please get this "Andy Rathbone (2016). Windows 10 For Dummies" book and read it.

How about other operating systems such as Mac OS X, Linux or Unix?

If you have a Mac then you can get this "David Pogue (2015). OS X El Capitan: The Missing Manual" book and read it.

If you have a PC with (Ubuntu) Linux or Unix then you can get this "Mark G. Sobell (2015). A Practical Guide to Ubuntu Linux" book and read it.
After reading these books if you feel that you are interested in this topic and want to know more about it then you can get this "Abraham Silberschatz et al. (2012). Operating System Concepts" and take a quick look at it.

Once you finish reading the books about how to use an operating system, please click Topic 2 - Introduction to Programming to continue.