Secure Software Development

Programming Languages: History, Concepts & Design

Unit 3

Welcome to Week 3 where we will spend some time investigating programming languages – looking at the history, concepts and design that led to the languages we have today. Programming languages are a fundamental concept in computer science – they are the primary tool used by computer scientists and developers to design, define, create and implement the tools we use today.
This session will describe in some detail the history and concepts of programming languages. We will start by looking a basic definition and discussing where programming languages came from, the impact of the work of Alan Turing and Alonzo Church and reviewing the basic paradigms that define the different types of programming languages available today. We will also review the development of programming languages, from the early machine code language of the Small Scale Experimental Machine (SSEM), through the first assembly language code of the Cambridge EDSAC (which in turn led to the first business machine – the Lyons Electronic Office (LEO)), to the giddy days of the nineteen fifties and the birth of languages such as Cobol, Fortran and Lisp, ultimately leading to the design of ALGOL. This section will help students understand the origins of programming languages and how those roots have influenced language design today.
We will spend some time looking at key language concepts such as inheritance, polymorphism and abstraction, why we need and use these techniques and how they are implemented, using Python as an example. We will also review some common security challenges and look at best practice recommendations to mitigate them. Finally, we will look at design patterns and how they can help developers design and build better and more secure software applications

Outcomes

  • Summary of the learning outcomes

This unit aims to:

  • Describe some key milestones in the development of programming languages
  • Outline some of the key paradigms that define the different types of languages
  • Explain the key concepts that determine the operation of programming languages
  • Discuss key programming challenges and recommended best practices
  • Explain what design patterns are and when to use them
  • Reflection

What exactly have I learnt and how?

This unit gave me essential knowledge about the risks and challenges of using programming languages. I was surprised that every language is not very secure. It always depends on how you use it, and with the proper consideration of cyber risks in the background, every programming language can be secure. Therefore this module gives me new thoughts about how to code. When coding, I will add secure software development methods from now on.
  • Notes

Notes from the elaboration of the unit, various meetings, and feedback from team members and tutors

No notes were elaborated in this unit.

Contact Me