Tag Archives: Lisp

Topic 3 – 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 the instructions of your computer programs.
Without knowledge of a programming language, you cannot develop software.

I hear that there are many programming languages such as C, C++, C#, Objective-C, Java, Swift, Ruby, Python, JavaScript, PHP, F#, Kotlin, Clojure, Go, and Lisp.
How many programming languages should I know?

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

What can I do after finishing learning programming language?

You will be able to write programs that tell a computer to:

  • perform calculations,
  • count the occurrences of a string,
  • store and search for a string,
  • sort a list of numbers, or
  • display an image.

What should I do now?

Please read this book to learn programming using the C language: Stephen Prata (2011). C Primer Plus. Pearson.

Alternatively, you can read this book (from Chapter 1 to Chapter 9), to learn programming using the C++ language: Stephen Prata (2012). C++ Primer Plus. Pearson.

Alternatively, you can read these books to learn programming using the Python language:,

Alternatively, you can read this book (from Chapter 1 to Chapter 11), to learn programming using the Ruby language: Chris Pine (2013). Learn to Program: The Facets of Ruby Series. The Pragmatic Bookshelf.

Alternatively, you can read these books to learn programming using the Go language:

After that, if you would like to study system programming in depth, please read one of the following books:

After that, if you would like to build your vocabulary and gain in-depth knowledge of programming, especially the relationship between mathematics and programming, as well as the ideas of functional programming and logic programming, then please read the book or the notes below:

Terminology Review:

  • Computer Programs.
  • Compilers.
  • Just-In-Time Compilers.
  • Interpreters.
  • Structured Programming.
  • Procedural Programming.
  • Object-Oriented Programming.
  • Functional Programming.
  • Declarative Programming.
  • Logic Programming.
  • Primitive Types: int, float, double, string, date/time, null.
  • Basic Constructs: variables & assignments, pointers, declarations, functions, macro.
  • Control Flow: if/else, while, switch, for, break, continue, recursion, exception, parallelism, signal, jump.
  • User-defined Types: struct, class, type.
  • Data Structures: Arrays, Lists, Linked Lists, Dictionaries.
  • Object-Oriented Programming: abstraction, encapsulation, class-based inheritance, prototype-based inheritance, polymorphism.
  • Functional Programming: first-class and higher-order functions, no side effects, recursion.
  • Modularity: files, packages, namespaces, libraries, modules.
  • Concurrency: processes, threads, locks, channels, timers, callbacks, events, promises, event loop.
  • Type system: static type, dynamic type.
  • Error handling: try/catch.
  • Metaprogramming: reflection, template programming, DSL.
    • Clojure.

    After finishing programming, please click on Topic 4 – Introduction to Data Structures and Algorithms to continue.