An overview of CS courses taken at Auburn University.
-
Fundamentals of Computing I (COMP 1210) is an introduction to the fundamental concepts of programming from an object-oriented perspective. Emphasis on good software engineering principles and development of the fundamental programming skills in the context of a language that supports the object-oriented paradigm.
-
Fundamentals of Computing II (COMP 2210) is designed to introduce fundamental data structures and associated algorithms, as well as applications in which they are commonly used. An object-oriented approach to problem solving and program design will be emphasized in the lecture and reinforced in the lab. This is one of the cornerstone courses for several majors, including Computer Science, Software Engineering, and Computer Engineering. In this course, students will learn about developing programs that use data structures and collections to efficiently store data. Emphasis will be placed on the interplay between effective data structures and efficient algorithms.
-
Software Construction (COMP 2710) is both a course on managing the complexity of large systems and an applied programming class. Managing software complexity requires some knowledge of software process. Applied programming means that you will be required to critically analyze real-world types of problems, design algorithms, and then implement those algorithms in high-level code to solve problems.
-
Principles of Programming Languages (COMP 3220) aims to introduce key constructs of programming languages as well as contrast key strengths and weaknesses in different programming languages, past and present. Students are introduced to various programming languages and will demonstrate an understanding of concepts presented in class by writing programs in these languages. Lastly, students will touch on the theory behind how programming languages are created and will be introduced to compiler design by studying different approaches to lexical and syntactic analysis.
-
Introduction to Algorithms (COMP 3270) introduces algorithms for standard computational problems and techniques for analyzing their efficiency; designing efficient algorithms and experimentally evaluating their performance.
-
Computer Organisation & Assembly Language (COMP 3353) is designed to develop familiarity with computer organization and design using the Assembly programming language. We touched on stored program computers, hardware and software components, data representations, instruction sets, addressing modes, loaders and linkers, and operating systems.
-
Introduction to Operating Systems (COMP 3500) teaches the structure and functions of operating systems; processes and process scheduling; synchronization and mutual exclusion; memory management; auxiliary storage management; resource allocation and deadlock; security, privacy, and ethical concerns; design tradeoffs.
-
Software Modeling and Design (COMP 3700) aims to educate students on the role of analysis and design in the software engineering lifecycle, develop object-oriented designs by applying established design principles, develop use-case and scenario descriptions of the requirements, develop richer descriptions of design models using UML diagrams, understand the role and influence of design patterns and frameworks in software design, and evaluate the quality of design models.
-
Formal Languages (COMP 4200) teaches the fundamentals of formal languages including mathematical models of regular sets, context-free languages and Turing machines; deterministic and non-deterministic models.