Croydon Tutorial College

Workshops, Clinics, Tutoring and e-Tutoring

Career Switch to Programming

Are you interested in making a start on learning how to program and build applications in widely used programming languages?

Are you anxious that programming is difficult and complicated because you are new to it?

Mastering the art of programming can seem daunting but when approached systematically and gradually is actually quite achievable.

Being a competent working programmer generally involves mastering a number of programming languages, and your journey begins with your first language. Instead of succumbing to the myth that "The most difficult language is the first programming language you learn" think of a programming language as a means of expressing what you want a computer program to do. The real skill is in mastering "problem solving". The skill of problem solving in computing can be described as "computational thinking". The wonderful thing about computational thinking skills is that they can be applied to lots of other problems, not just computing problems.

There are many good books and online courses for beginners. However, sometimes there is a need for help with "overcoming difficulties" such as being stuck with some aspect of the language you are studying, or with difficulties interacting with the operating system your computer is running.

Computers are indispensable in the modern world. However, computers are machines and they can only do what they are told to do. A computer program is simply a set of instructions to get the computer to do something.

Computer programming languages used by most programmers work at a fairly high level and do not require a knowledge of the low level details of the computer they are running on. Such languages are describe as "high level languages". Programmes written in a high level language are converted into instructions in a low level language, such as assembler. Assembler code can then be converted into machine code which contains the instructions that the computer processor actually executes.

This introduction to programming course introduces the basics of computer programming and computational thinking using a graphical programming language called Snap! developed at the University of Berkeley in California. It then introduces the widely used programming language Python. This is followed by an introduction to Databases and the SQL language. The final part covers web programming using HTML, CSS and JavaScript.

Part 1: Coding for absolute beginners

  • Computational Thinking and Coding - First Steps
  • Overview of widely used programming languages
  • Snap! - Why graphical programming is a good place to begin
  • Algorithms and Problem Solving
  • Basic Concepts and Constructs of Computer Programs
    • Binary numbers
    • Variables
    • Representing Integers and Floating point numbers in binary
    • Mathematical operations on numbers
    • Strings and String manipulation
    • If - Else logic and decision making
    • Collections of values - Arrays
    • Iteration and Loops
    • Functions
    • Objects and Object Oriented Programming
  • Computer Architectures
  • Computer Operating Systems
  • Computer Networks

Part 2: Coding with Python

Python is widely used as a first programming language. It is also a widely used programming language both for web programming and in data analysis and artificial intelligence machine learning applications.

  • Why is Python such a popular programming language ?
  • Installing Python
  • Understanding how Interpreted Programming Languages like Python Work - REPL
  • Foundations of Python
    • Variables
    • Logic and logical expressions
    • Arithmetic in Python
    • Strings and String manipulation in Python
    • Decision making and IF - ELSE
    • Functions
    • Python Modules
    • Object Oriented Programming in Python
  • Object Oriented Programming in Python
  • Basic data analysis and data visualisation in Python

Part 3: Databases and SQL programming for beginners

Database Management Systems lie at the heart of many enterprise applications. Understanding how to design databases for applications and how to query databases using SQL are essential programming skills. The course will use MySQL/MariaDB and SQLite as example database systems. Having mastered these it is possible to confidently master other database management systems such as Oracle, SQLServer and PostgreSQL.

  • Databases - an overview
  • Relational databases - an overview
  • Installing MariaDB and SQLite
  • Introduction to the Declarative Language - SQL
    • Declarative vs. Procedural Languages
    • DDL - Data Definition Language part of SQLL
    • DML - Data Manipulatioin Language part of SQL
  • Structure and Manipulation of Databases
    • Representing data as Tables
    • Database Keys and Indexes
    • Using primary keys and foreign keys to capture relations
    • Creating Tables using SQL
    • Querying databases using SQL
      • Queries involving a single table
      • Queries involving multiple tables - JOINs
      • Queries involving summarisation and aggregation of data
  • SQL Views
  • Database Transactions
  • Querying relational databases using Python and SQL

Part 4: Coding Web Pages with HTML, CSS and JavaScript

Web application developers can be classified as either Front End developers who focus on the design and appearance of web pages and the User Experience (UX), and Back End developers who focus on the application code running on the Web Server side. Developers with both Front End and Back End skills are referred to as Full Stack developers.

  • Overview of HTTP and Client-Server computing
  • Overview of HTTP and Client-Server computing
  • Installing and configuring an Apache2 web server using XAMPP
  • Controlling HTML Layout using div
  • Laying out information in Tables
  • Working with Fonts, Styles and Colours
  • Introduction to CSS - Cascading Style Sheets
  • Styling web sites using CSS
  • Mastering Forms and Links
  • Introduction to JavaScript Programming
  • Introduction to Bootstrap 4 and the design of Responsive Web Sites
  • Introduction to Web Server application development using Python and Django
  • Introduction to Dynamis Web Site application development using PHP7/PHP8 and MySQL

On completing this course you will have moved well past the beginner stage. You should be able to not only set up your own databases and web servers, but, also start earning good money by applying your newly acquired skills.