4  Learning map

4.1 Introduction

Acquiring knowledge of any subject involves answering 3 fundamental questions.

  • Why? Most fundamental question that teaches the motivation
  • What? Declarative knowledge that teaches the definition
  • How? Imperative knowledge that teaches ways to apply the knowledge

Similarly to learn computer programming you can use the below map.

  • Why do you learn computer programming? \(\to\) Use cases
  • What is computer programming? \(\to\) Theory: Building blocks, Architecture, Design
  • How do you do computer programming? \(\to\) Practical experience: Tools, Application

Learning theory equip you with knowledge about the subject, but to develop skill in the subject you need the tools and practical experience of applying the knowledge.

While covering theory, there is an attempt to provide exposure to some common scenarios of where and how to apply the concepts along with some common mistakes. Topic of design is related to this. Whereas by experience, you get better at the skill of deciding what concepts to apply under which situations.

For example, there are limited specifications of a language which you can learn quickly, but there are much larger possible ways to combine them. Operating systems, language compilers and interpreters have been written using the same specifications, without even using OOP, which is related to the skill of writing programs (applying theory in practice). For basic usage it is not required to have skills to write an operating system, but the example is to illustrate the difference between the “what” and “how” parts above.

The learning map, in context of depth of knowledge, will depend on the career path. There are 3 distinct possible career paths in context of programming.

  • Generic: Basic
  • STEM (minus CSE): Intermediate
  • Computer science & Engineering (CSE): Advanced

STEM => Science, Technology, Engineering & Math related fields

4.2 Basic

There are some common elements of programming which can be the starting point for all career paths.

  • Introduction to programming with basic applications (this book)
  • Basics of data analysis

4.2.1 Theory

As a beginner, you learn the basics of any one programming language. Python is chosen in this book as it is most popular generic programming language.

This book covers the basics and some intermediate topics in detail. Additionally, some intermediate and advanced topics are introduced, but not covered in detail, to improve the understanding of context while programming, but keeping the complexity low.

Color coding rules used

  • covered in detail
  • high level introduction
  • not covered
Language specification

 

Building blocks
  • Basic specifications
    • Lexicons
    • Variables
    • Comments
  • Data types and operations
  • Control flow blocks
  • Functions
  • OOP
  • Special features

 

Architecture
  • Environment = Namespace + Scope
  • Scripts and packages
  • External packages
  • Language engine
  • Debugging

 

Design
  • Components
    • Design patterns
      • Map reduce
    • DSA
    • Regular expressions
  • Frameworks
  • Workflow

 

Tools
  • Command line interface
  • Version control system
  • Language installation
    • Engine
    • External packages
    • Virtual environments
  • Editor

4.2.2 Applications

  • Automation
    • system operations
    • documentation
  • Basics of data analysis (including visualization)
  • Domain specific basic applications

4.3 Intermediate

Most of the science and engineering fields require heavy usage of data science which requires good practical programming skills along with math involved, specially probability and statistics.

In context of programming, the assumption is you would know the basics (content of this book) and move on to learn intermediate level theory. The topics will be same but study will be intermediate to advanced level. For example, details of OOP, design patterns like generators, context managers, etc. and how to implement them from scratch.

In addition it would be good to learn a compiled language like C++, with lower level details like memory management and parallel processing.

The key aim will be to be able to build basic domain specific packages and applications using frameworks if required.

  • Theory
    • programming (intermediate level)
    • data science (intermediate level)
    • math: probability & statistics to model data
  • Application
    • data analytics
    • building domain specific packages
    • building basic applications using frameworks

4.4 Advanced

In terms of theory there will be advanced coverage of topics depending on specialization.

  • Math for computer science
  • Language specification, implementation & design
  • Data structures & Algorithms
  • Design patterns
  • Frameworks

In terms of application the path will depend on the choices.

  • Embedded devices
  • Operating systems
  • Desktop applications
  • Mobile applications
  • Databases
  • Websites
  • Network applications
  • Media