Survey of Programming Languages
- Sciences
- 300 level
- 4 credit units
- 146 pages
- 15 units
This course provides a survey of programming languages, exploring their evolution, concepts, and application domains. It covers fundamental syntactic and semantic concepts underlying modern programming languages such as C/C++, C#, Java, Python, LISP, PERL, ALGOL, and PROLOG. Students will learn about language description, evolution of programming language levels, and language comparison, enhancing their ability to choose appropriate languages for different tasks.
About this course
- Difficulty
- Intermediate
- Study hours
- 156 hours
- Maths
- Basic
- Content
- Theoretical, case study
- Practical work
- No
- Basic programming knowledge
- Data structures and algorithms
- Assignments
- Tutor Marked Assignments
- Final Examination
What you'll read
The real module and unit structure of CIT332, taken from the course material NOUN publishes.
One paragraph, so you can see how it reads
CIT332 · UNIT 1: HISTORY OF PROGRAMMING LANGUAGES
Now, let's go back and try to understand a computer program, which is a sequence of instructions written in a Computer Language to perform a specified task by the computer. Following is a simple program written in Python Programming Language − print "Hello, World!"
What you should be able to do
- Demonstrate understanding of programming language paradigms
- Explain the principles of syntax and semantics
- Compare and contrast different programming languages
- Evaluate the design and implementation of programming languages
- Apply programming language concepts to solve problems
What it prepares you for
- Software Developer
- Systems Analyst
- Compiler Designer
- Programming Language Researcher
- Software Engineer
- Software Development
- Artificial Intelligence
- Web Development
- Systems Programming
- Compiler Design
- C/C++
- C#
- Java
- Python
- LISP
- PERL
- ALGOL
- PROLOG
Where it gets hard
The units students slow down on, and what makes each one heavy.
- Module 3: Language Description
Unit 3: Formal Language and Grammars
Understanding the nuances of formal grammars and their application in parsing requires a strong foundation in discrete mathematics and formal language theory.
- Module 4: Evolution of Programming Language Levels
Unit 2: Evolution of Different Languages
LISP's unique syntax and functional programming paradigm can be challenging for students accustomed to imperative languages.
A suggested way through it
13 weeks, about 96 hours in total. Yours will differ.
- Week 1Module 1: Concept of Programming Languages
Unit 1: History of Programming Languages · 4 hours
Understand the history of programming languages. Differentiate between different generations of programming languages. Describe the characteristics of each generation.
Unit 2: Reasons for Studying Concepts of Programming Language · 4 hours
Identify reasons for studying programming language concepts. Discuss the importance of expressing ideas and algorithms effectively. Explain how studying language concepts improves language selection.
- Week 2Module 1: Concept of Programming Languages
Unit 3: Application Domains · 4 hours
Explore different application domains of programming languages. Identify languages suitable for scientific applications. Discuss languages used in data processing and AI.
Unit 4: Criteria for Language Evaluation · 4 hours
Analyze criteria for language evaluation. Discuss expressivity, well-definedness, and readability. Evaluate the tradeoffs in language design.
- Week 3Module 2: Influence of Language Design
Unit 1: Computer Architecture · 4 hours
Understand the influence of computer architecture on language design. Explain the Von Neumann architecture. Describe the Fetch-Decode-Execute cycle.
Unit 2: Language Paradigms · 4 hours
Discuss different language paradigms. Compare imperative, functional, and object-oriented paradigms. Explain the characteristics of each paradigm.
- Week 4Module 2: Influence of Language Design
Unit 3: Language Design Trade-offs · 4 hours
Analyze language design trade-offs. Discuss reliability, expandability, and programmability. Evaluate the trade-offs in language design.
Unit 4: Implementation Method · 4 hours
Explore different implementation methods. Compare compilation, interpretation, and hybrid approaches. Discuss the advantages and disadvantages of each method.
- Week 5Module 3: Language Description
Unit 1: Fundamental Syntactic Analysis Concept on Underlying Modern Programming Language · 8 hours
Understand fundamental syntactic analysis concepts. Explain language recognizers and generators. Discuss parsing and parse trees.
- Week 6Module 3: Language Description
Unit 2: Fundamental Semantic Analysis Concept on Underlying Modern Programming Language · 8 hours
Understand fundamental semantic analysis concepts. Explain operational, denotational, and axiomatic semantics. Discuss static and dynamic semantics.
- Week 7Module 3: Language Description
Unit 3: Formal Language and Grammars · 8 hours
Understand formal languages and grammars. Explain the syntax of grammars. Discuss Noam Chomsky and John Backus.
- Week 8Module 3: Language Description
Unit 4: The Basic Elements of Programming Language · 8 hours
Explore the basic elements of programming languages. Discuss primitive data types and expressions. Explain control structures and subroutines.
- Week 9Module 4: Evolution of Programming Language Levels
Unit 1: Brief History on Level of Programming Languages · 8 hours
Understand the brief history of programming language levels. Explain low-level, middle-level, and high-level languages. Discuss the differences between low-level and high-level languages.
- Week 10Module 4: Evolution of Programming Language Levels
Unit 2: Evolution of Different Languages · 4 hours
Explore C/C++ languages. Discuss C/C++ program structure and features. Understand the evolution of C/C++.
- Week 11Module 4: Evolution of Programming Language Levels
Unit 2: Evolution of Different Languages · 4 hours
Explore C#, Java, Python, LISP, PERL, ALGOL, and PROLOG. Discuss program structure and features of each language. Understand the evolution of these languages.
- Week 12Module 4: Evolution of Programming Language Levels
Unit 3: Language Evaluation and Comparison · 8 hours
Understand language evaluation and comparison. Discuss criteria for a good programming language. Compare and contrast different programming languages.
- Week 13Module 4: Evolution of Programming Language Levels
Unit 3: Language Evaluation and Comparison · 8 hours
Review all course materials. Work on assignments. Prepare for final examination.
Preparing for the exam
- Review all tutor-marked assignments (TMAs)
- Focus on understanding the core concepts of each programming paradigm
- Practice writing code in different languages
- Create concept maps linking syntax, semantics, and implementation
- Study language evaluation criteria and compare different languages
Questions students ask about this course
What is CIT332 about?
This course provides a survey of programming languages, exploring their evolution, concepts, and application domains. It covers fundamental syntactic and semantic concepts underlying modern programming languages such as C/C++, C#, Java, Python, LISP, PERL, ALGOL, and PROLOG. Students will learn about language description, evolution of programming language levels, and language comparison, enhancing their ability to choose appropriate languages for different tasks.
How many units does CIT332 have?
CIT332, Survey of Programming Languages, has 15 units across 4 modules, over 146 pages of course material. You can read it one unit at a time.
How many credit units is CIT332?
CIT332 carries 4 credit units, at 300 level in Sciences.
Is CIT332 hard?
CIT332 is rated intermediate level, with basic mathematical content. It is mostly theoretical and case study work.
How long does CIT332 take to study?
About 156 hours of study, spread across its 15 units.
How is CIT332 assessed?
CIT332 is assessed by Assignments, Tutor Marked Assignments and Final Examination.
What do I need before starting CIT332?
Basic programming knowledge Data structures and algorithms
What can I do with CIT332?
Software Developer, Systems Analyst, Compiler Designer, Programming Language Researcher and Software Engineer.