Week 1: Introduction to Programming Languages

  • Programming Languages Introduced:

    • Microsoft Language Pascal

    • DATATRIEVE

    • ALGOL

    • PL

    • SALSA

    • ATS

    • Assembly

    • ELAN

    • Fancy SuperTalk

    • ABC

    • C++

    • GM Constraint

    • XOTd

    • de Cayenne

    • Oxygene

    • PEARL

    • BUSS notation

    • Cyclone

    • TACPOL

    • Shell

    • Visual

    • Go

    • ABAP

    • C/AL

    • Cg

    • Rust

    • GDL

    • Bistro

    • JOSS

    • PT, Co Scale

    • Genie

    • Inform

    • Blue

    • Sense Talk

    • HAL/S

    • SIMSCRIPT

    • Revolution

    • Sawzall

    • Chapel

    • Adenine

    • Agora

    • Clojure

    • Rapira

    • SIMPLE

    • CSKA

    • Autolt

    • Microcode

    • Lynx

    • SAM76

    • Redcode

    • Ajax

    • Not Trac

    • Object language

    • Lisp

    • VB

    • A+

    • JavaScript

    • Delphi

    • DASL

    • Script

    • PHP

    • Common

    • ORCA/Modula-2

    • Arc

    • Moby

    • Uniface

    • Caral

    • WATFOR

    • Eustisp

    • ObjectScript

    • D

    • R

    • Forth

    • MicroScript

    • Logo

    • Squirral

    • Windows/Dos

    • Kaleidoscope

    • IMP

    • b

    • T

    • Newapeak

    • GameMonkey

    • Prolog

    • Caml

    • Z

    • ECMAScript

    • Java

    • Programming

    • Ruby

    • EXEC

    • RPG

    • CorVision

    • Action

    • REXX

    • NETO

    • Simula

    • Python

    • Strand

    • Robot

    • SP/k

    • Boomerang

    • COBOL

    • GraphTalk

    • Turing

    • ISWIM

    • Haxe

    • Eiffel

    • S/SPL/SQL

    • A

    • Chuck

  • Overview of Programming Languages:

    • Notable examples include:

    • C

    • C++

    • Ruby

    • C#

    • PHP

    • Objective-C

    • Python

    • JavaScript

    • Perl

    • Visual Basic


About the Instructor: Dr. Brahim El Boudani

  • Contact Information:

    • Email: elboudani@lsbu.ac.uk

    • Room: FW-210

    • Phone: TBA

    • Affiliation: LSBU, School of Computer Science and Digital Technologies

  • Research Interests:

    • Machine Learning

    • WebRTC

    • IoT

    • 5G Networks

    • Web Development


Student Interaction

  • Introductions:

    • Students are encouraged to share personal information, interests, and previous programming experience.

    • Discussion Points:

    • What interests you about Computer Science?

    • Why do you want to learn programming?

    • Key expectations from the course.


Academic Support

  • Support Resources:

    • Teaching team for the course.

    • Skills for Learning team at LSBU Hub:

    • Offers support in Academic Practices and English Language Development.

    • Mathematics and Statistics support available.

    • Appointments:

    • One-to-One Appointments available (30 minutes).


Resources for Students

  • Free Software for Students:

    • Labs equipped with software necessary for the module:

    • Microsoft Azure Dev-Tools for Students

    • Microsoft 365

    • GitHub Student Pack


Module Guide Overview

  • Module Aims:

    • Provide students with fundamental programming skills.

    • Understand software development concepts, including writing source code and compiling/executing programs.

    • Familiarization with development tools and environments.


Module Structure & Assessment

  • Contact Time:

    • 4 hours weekly with teaching team

    • 2 hours lecture

    • 2 hours tutorial

  • Assessment Breakdown:

    • In-class Test: 50% (Multiple choice questions)

    • Coding Assignment: 50% (Report and source code).


Core Textbooks

  • Mandatory Reading:

    • Kernighan, B. W. and Ritchie, D. M. (1988). The C Programming Language. 2nd ed. Englewood Cliffs, N.J.: Prentice Hall.

    • Chopra, R. (2017). C Programming. Mercury Learning & Information.

    • K. N. King (2008). C Programming: A Modern Approach. New York: W.W. Norton & Company.

    • Pal, M. (2012). C Programming. Oxford: Alpha Science International Ltd.


Optional Reference Textbooks

  • Oualline, S. (1997). Practical C Programming. 3rd ed. O'Reilly Media.

  • Ackermann, E. C. (1993). C Programming Language. Piscataway, NJ: Research & Education Association, U.S.

  • Clean Code: A Handbook of Agile Software Craftsmanship (2009). Prentice Hall.

  • Perry, G. (2013). C Programming Absolute Beginner's Guide. Que.

  • Harwani, B. M. (2020). Practical C Programming. Birmingham: Packt Publishing Limited.

  • Griffiths, D. and Griffiths, D. (2012). Head First C. [1st edition]. Sebastopol, CA: O'Reilly.


Important Reminders

  • Thoroughly review the module guide.

  • Use a logbook for notes.

  • Maximize lab time by completing examples/exercises promptly.

  • Participate in virtual interactions (Q&A, polls, quizzes, etc.) through VLE forum.

  • Check Moodle regularly for updated materials:

    • Lecture slides

    • Tutorial sheets

    • Recorded lectures


Starting with Programming Basics: Algorithms & Flowcharts

Computer Programs & Software Development

  • Computer Program:

    • Defined as a set of instructions to make a computer perform specific tasks.

  • Computer Programming:

    • The act of writing or editing source code.

  • Software Development:

    • Refers to the process involved in writing computer programs.


Understanding Algorithms

  • Definition of Algorithm:

    • A formal step-by-step method for solving problems, consisting of:

    • An ordered sequence of instructions.

    • Each step should be unambiguous, finite, and terminate after a fixed number of steps.

    • Must include some input and potentially produce output.

  • Formulating Algorithms:

    • Can use natural language, sketches, diagrams, or pseudocode.

    • The representation intended for machine readability is termed programming.

Algorithm Example: Finding Maximum in an Array

  • INPUT: An array X with n elements.

  • OUTPUT: Finding the largest element, MAX, in array X.

  1. Set MAX = 0

  2. For j = 1 to n do

  3. If (X[j] > MAX) then MAX = X[j]

  4. End for

  5. Stop


Flowcharts

  • Definition of Flowchart:

    • A pictorial representation of an algorithm that serves to:

    • Record, analyze, and communicate problem information in a human-readable format.

    • Outline the structure and logic of the algorithm, as well as the sequence of operations.

  • Components:

    • Made up of standard symbols indicating different operations.

    • Once drawn, easily translates into a program in any high-level language.

Flowchart Symbols

  • Flowlines:

    • Represent the direction of processing.

  • Start/End:

    • Oval shape signifies the beginning and end of a flowchart; there should only be one entry and one exit point.

  • Input/Output:

    • Parallelogram shape indicates processes of input and output.

  • Process:

    • Rectangle symbolizes a process involved.

  • Decision:

    • Diamond indicates points where a decision is to be made within the flowchart.


Comparison: Flowchart vs Algorithm

Flowchart

Algorithm

Graphical representation

Step-by-step finite procedure

Uses various shapes joined by flow lines

Step-by-step written instructions

Flow control moves from top to bottom

All instructions written in plain English

Easily converted into algorithm

Easily converted into flowchart

Typically drawn after the algorithm is written

Generally written before creating a flowchart


Example of Flowchart vs Algorithm

  • Input: Two numbers x and y.

  • Output: Average of x and y.

Algorithm Steps:

  1. Input x, input y

  2. sum = x + y

  3. average = sum / 2

  4. Output average

Flowchart Representation:

  • Transition through various shapes to represent the steps visually.


Tools to Create Flowcharts & Algorithms

  • Recommended Software:

    • Pseudocodes.

    • PowerPoint.

    • Lucidchart (Web).

    • Microsoft Visio (Windows, Web).

    • Draw.io (Web, Windows, Mac, Linux, ChromeOS).

    • OmniGraffle (macOS, iOS).

    • Gliffy Diagram.


Quote

  • "An algorithm must be seen to be believed." - Donald Knuth


LSBU School of Computer Science and Digital Technologies