Augustana Faculty - Computing Science
In order to see more information about any course, simply click on it!
You are currently viewing all courses in this subject. To just see courses that have bee offered in the past 2 years click here:
Description: Historical overview of the development of modern computers; computer applications and the social implications of information technology; the user interface and system design principles; introduction to programming and the software life cycle; overview of programming languages and introduction to program translation; gates, circuits, and Boolean logic; the architecture of a von Neumann machine; Turing machines and the theory of computation; artificial intelligence; computers and society. Prerequisite: Mathematics 30-1.
Description: An introduction to computational thinking, problem solving, and the fundamental ideas of computing science through programming in a scripting language (such as Python or Ruby). Topics include algorithms, abstraction, and modelling; the syntax and semantics of a high-level language; fundamental programming concepts and data structures, including simple containers (arrays, lists, strings, dictionaries); basic software development methods and tools; documentation and style; introduction to object-oriented programming; exceptions and error handling; graphical user interfaces and event-driven programming; recursion; introduction to algorithm analysis and run-time efficiency. Prerequisite: Mathematics 30-1. Note: Credit may be obtained for only one of AUCSC 111 and AUCSC 120.
Description: An introduction to object-oriented design and programming in Java; algorithm analysis; data structures and container classes (lists, stacks, queues, priority queues, maps, dictionaries), their implementations (arrays, linked lists, heaps, hash tables), and associated algorithms (insertion, removal, iterators, sorting, retrieval); introduction to recursion. Prerequisite: AUCSC 111 or 120. Corequisite: AUMAT 110 or 111 or 116 and 120. Note: Credit may be obtained for only one of AUCSC 112 and AUCSC 210.
Description: Introduction to programming, problem solving, and designing large software systems using an object-oriented programming language (typically Java); objects, classes, methods, messages, parameters, inheritance, encapsulation, binding, polymorphism; algorithmic constructs; basic data structures; overview of software engineering. Prerequisite: Mathematics 30-1 Corequisites: AUMAT 110 or 111 or 116, and 120.
Description: Introduction to algorithm analysis and Onotation. Abstract data types (lists, stacks, queues, trees, priority queues, dictionaries, sets), their implementations (linked lists, binary trees, heaps, binary search trees, balanced search trees, hash tables), and associated algorithms (iterators, enumerators, traversal, sorting, searching, retrieval). Prerequisites: AUCSC 120, AUMAT 110 or 111 or 116, and AUMAT 120. Corequisite: AUMAT 250.
Description: Software engineering paradigms, requirements specification, iterative software development, object-oriented design patterns, visual modelling with UML, software architecture; testing, verification and maintenance; software development environments and software engineering tools; societal implications such as the cost of failure and professional responsibilities. Prerequisite: AUCSC 112 or 210.
Description: Introduction to computer systems as multilevel machines. Topics include data representation; the organization and execution cycle of Von Neumann machines; assembly-level programming, addressing modes, control flow, procedure calls, input/output, interrupts, caching; finite state machines, Boolean algebra, logic gates, and digital circuits. Prerequisite: AUCSC 112 or 120.
Description: Trees, binary trees, search trees, their implementation, traversal, and search and update operations. Introduction to graph theory; data structures for the representation of graphs, digraphs, and networks, and their associated algorithms (traversal, connected components, topological sorting, minimum-spanning trees, shortest paths, transitive closure). Dynamic equivalence relations and union-find sets; amortized analysis. String matching. Algorithm design techniques (divide-and-conquer, dynamic programming, the greedy method). Merge-sort and the analysis of divide-and-conquer algorithms with recurrence relations; bucket-sort, ratix-sort, and the lower bound on sorting; comparison of sorting algorithms. Prerequisites: AUCSC 112 or 210 and AUMAT 250.
Description: Models of computers including finite automata and Turing machines, computability, basics of formal languages with applications to the syntax of programming languages, unsolvable problems and their relevance to the semantics of programming, and concepts of computational complexity, including algorithm optimality. Prerequisites: AUCSC 112 and AUMAT 250. Note: credit may be obtained for only one of AUCSC 315 and AUMAT 355.
Description: Detailed study of software development processes, life cycles, and tools, especially object-oriented methods. Team work is emphasized in the completion of a large software project, from problem definition through to maintenance. Prerequisite: AUCSC 220.
Description: Introduction to current database management systems in theory and practice. Topics include relational database design (including entity-relationship modelling, relational schema, and normal forms); relational algebra, use of a query language (typically SQL) and other components of a current database management system; overview of database system architecture, file structures (including B-tree indices), query processing, and transaction management; new directions. Prerequisites: AUCSC 112 or 210, and AUMAT 250.
Description: Computer arithmetic and errors, solution of systems of linear equations, root finding, interpolation, numerical quadrature, and numerical solutions of ordinary differential equations. Applications from physics are included. Prerequisites: AUCSC 111, AUMAT 120, AUMAT 112; or consent of the instructor. Note: Credit may be obtained for only one of AUCSC 340, AUMAT 340, AUPHY 340.
Description: Architecture of historical and contemporary computer systems, including CPU chips and buses, memory, secondary memory devices, and I/O interfaces. Performance enhancement techniques, including prefetching, pipelining, caching, branch prediction, out-of-order and speculative execution, explicit parallelism, and predication are discussed. The course also includes the data path and control logic at the microarchitecture level; error detection and correction; floating-point number representation and calculation; fast arithmetic circuits; instruction sets and formats; and an overview of alternative and parallel architectures, including RISC/CISC, SIMD/MIMD, shared memory and message passing architectures. Prerequisite: AUCSC 250.
Description: Introduction to computer communication networks and network security. Physical and architectural elements and information layers of a communication network, including communication protocols, network elements, switching and routing, local area networks, and wireless networks. Authentication, cryptography, firewalls, intrusion detection, and communication security, including wireless security. Prerequisite: AUCSC 250. Corequisite: AUCSC 380
Description: Principles of language design, abstraction, syntax and parsing, operational semantics (declaration, allocation, evaluation, run-time environment, typing, activation), and programming language paradigms (procedural, object-oriented, functional, logic programming). Prerequisites: AUCSC 112 or 210, and AUMAT 250. Corequisite: AUCSC 250.
Description: Operating system functions, concurrent process coordination, scheduling and deadlocks, memory management and virtual memory, secondary storage management and file systems, protection. Prerequisites: AUCSC 250.
Description: Intensive study of a specific area of Computing Science as defined by the student and a supervising instructor, including completion of a software project in the selected area. Prerequisite: *9 of senior-level Computing Science. Notes: Admission to AUCSC 395 normally requires a minimum GPA of 3.0 in Computing Science. An "Application for Individual Study" must be completed and approved before registration in the course.
Description: Advanced study of a selected topic in computing science. The focus and content of each course offering are determined by student and faculty interests, and vary from year to year. Prerequisites: At least third-year standing or consent of the instructor; previous course(s) in Computing Science as determined by the instructor.
Description: A four-month work experience placement focused on gaining practical experience in software development and/or information systems, and an appreciation of the demands and responsibilities of the computing profession. Upon completion of the work experience term, the student must submit a report to the Department which summarizes, evaluates, and reflects on the work performed and the knowledge and experience gained during the placement. Prerequisites: At least *18 in Computing Science, third-year standing, and consent of the Department. Note: Participation in the practicum is by application only, and is restricted to Computing Science majors.
Description: A four-month work experience placement focused on gaining practical experience in software development and/or information systems, and an appreciation of the demands and responsibilities of the computing profession. Upon completion of the work experience term, the student must submit a report to the Department which summarizes, evaluates, and reflects on the work performed and the knowledge and experience gained during the placement. Prerequisites: AUCSC 401 and consent of the Department. Note: Participation in the practicum is by application only, and is restricted to Computing Science majors.
Description: Algorithmic optimality. Efficient algorithms for handling complex data structures. Complexity classes P, NP, and P-Space. NP-completeness. Tractable and intractable problems. Methods for obtaining approximate solutions to intractable problems. Prerequisites: AUCSC 310 and 315.
Description: Models of computers, including finite automata and Turing machines, basics of formal languages, compatibility, algorithm optimality, complexity classes (p, NP, NPcomplete, EXP, PSPACE, etc.), probabilistic algorithms, approximation algorithms, number-theoretic and other selected algorithms, including selection and order statistics. Prerequisites: AUCSC 310. Notes: This course may not be taken for credit if credit has previously been received for AUCSC 315, 410, or AUMAT 355.
Description: Parallel architectures, programming language constructs for parallel computing, parallel algorithms and complexity. Message-passing, remote procedure call, and shared-memory models. Synchronization and data coherence. Load balancing and scheduling. Appropriate applications. Prerequisites: AUCSC 350.
Description: Current methods and practices in the use of computer networks to enable communication. Physical and architectural elements and information layers of a communication network, including communication protocols, network elements, data link, switching and routing, end-to-end protocols, LANs, and data security. Diagnostic, design, operation, and performance measurement tools that are used to implement, operate and tune a network. Comparison of different network architectures. Prerequisite: AUCSC 350. Corequisite: AUCSC 380.
Description: Survey of concepts and applications of artificial intelligence, including knowledge representation, state-space search, heuristic search, expert systems and shells, natural language processing, propositional logic, learning and cognitive models, vision; implementation using an AI language (LISP or PROLOG). Prerequisites: AUCSC 370 and AUMAT 250.
Description: Historical and social context of computing; the social and ethical responsibilities of the computing professional; the risks and liabilities that can accompany a computing application; intellectual property. The course includes extensive writing assignments and oral presentations. Prerequisite: At least *18 in Computing Science, including AUCSC 220 or 330; at least third-year standing.
Description: Intensive study of a specific area of Computing Science as defined by the student and a supervising instructor, including completion of a software project in the selected area. Prerequisite: *9 in Computing Science at the 300 level. Notes: Admission to AUCSC 495 normally requires a minimum GPA of 3.0 in Computing Science. An "Application for Individual Study" must be completed and approved before registration in the course.