1. This course will help students to achieve the following objectives:
Understand components of programming languages including control structures, names, types, objects, exceptions, etc.
Understand different kinds of programming language such as imperative, functional and logic languages.
Demonstrate skill in using several programming languages.
Learn how syntax and semantics are formally specified.
Develop a basic understanding of programming language implementation, especially insofar as the implementation impacts the design.
Develop the skills necessary to learn new programming languages quickly
2. In the context of the CptS degree programs' objectives, this course contributes to achievement of the outcomes:
An ability to apply knowledge of computing and mathematics appropriate to the discipline. The indicator of achievement of this outcome relevant for this course is: design algorithms and data structures to solve specific problems.
An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs. Indicators of achievement of this outcome relevant for this course include: recognizing when theory dictates that a solution is impractical or impossible; generating multiple design concept solutions for a problem; evaluating design concepts and choosing the most promising; implementing the selected approach to obtain a solution; validating a solution and identifying reasons for differences between actual and expected results.
A recognition of the need for, and an ability to engage in, continuing professional development. Indicators of achievement of this outcome relevant for this course include: seeking and evaluating outside (of the classroom) sources; solving problems using unfamiliar software packages, languages or systems; recognizing gaps in personal knowledge and identifying what additional knowledge is needed and methods for obtaining that knowledge; making reference to previous learning and applying it in novel situations.
An ability to use current techniques, skills, and tools necessary for computing practice. Indicators of achievement of this outcome relevant for this course include: using current programming languages, operating systems, and software libraries to implement solutions; using current tools to manage data and processes related to development of solutions.