A course in algorithms treating such topics as appropriate choice of data structures, recursive algorithms, complexity issues, and issues associated with computability and decidability. Intractable problems, such as those found in artificial intelligence, are discussed. This course is a first course in computer organization and assembly language programming. Students are exposed to the register level architecture of a modern processor and gain experience programming in the assembly language for that processor. A course in software systems stressing problem solving strategies and concepts applied in the context of issues associated with the design and implementation of software systems.
Students gain an appreciation for intractable problems as well as an exposure to concurrent systems.
Levels of abstraction are emphasized in data modeling and mapping to storage structures, and a treatment of user interfaces is included. This course in software engineering treats topics associated with the design and implementation of large software systems. A continued emphasis on problem solving concepts is integrated with a treatment of the software life cycle, requirements specifications, and verification and validation issues. Social and ethical issues faced by the computing professional are discussed in the context of software engineering. A course in programming languages that treats language design issues and language translators.