This course is about principles, concepts, and ideas that underlie programming languages. The course is purely conceptual aimed at making the student familiar with the general concepts common to all programming languages so as to facilitate learning new languages. The main topics of this course include a comparative study of programming language features, an introduction to programming language design and implementation, and an introduction to the theory of formal languages.
COURSE DESCRIPTION
This course introduces students to the foundations of software engineering as a discipline. Software engineering is the discipline concerned with the application of theory, knowledge, and practice to effectively and efficiently build reliable software systems that satisfy the requirements of customers and users. This discipline is applicable to small, medium, and large-scale systems. It encompasses all phases of the lifecycle of a software system, including requirements elicitation, analysis and specification; design; construction; verification and validation; deployment; and operation and maintenance. Whether small or large, following a traditional plan-driven development process, an agile approach, or some other method, software engineering is concerned with the best way to build good software systems.