AUCSC - Augustana Faculty - Computing Science
Offered By:
Augustana Faculty
Below are the courses available from the AUCSC code. Select a course to view the available classes, additional class notes, and class times.
An introduction to computational thinking, problem solving, and the fundamental ideas of computing. Topics include algorithms, abstraction, and modelling; the syntax and semantics of a high-level language (e.g. Python); fundamental programming concepts and data structures, including simple containers (variables, arrays, lists, strings, dictionaries); sequencing, conditionals and repetition; documentation and style; object-oriented programming; exceptions and error handling; graphical user interfaces and event-driven programming; recursion; simple algorithm analysis and run- time efficiency. Prerequisite: Mathematics 30-1. Note: Credit may be obtained for only one of AUCSC 111, AUCSC 113 (2023), and AUCSC 120 (2019).
An introduction to object-oriented design and programming in Java; algorithm analysis; data structures and container classes including arrays, lists, arraylists, stacks, queues, user-defined structures and an introduction to trees, along with associated algorithms such as insertion, removal, sorting and retrieval; introduction to recursion. Prerequisite: AUCSC 111, AUCSC 113 (2023) or AUSCI 135. Corequisites: AUMAT 116 and 120. Note: Credit may be obtained for only one of AUCSC 112 and AUCSC 211, and for only one of AUCSC 112 and AUSCI 235.
Introduction to current topics in computing and their application to a wide variety of areas within our society. Topics may be chosen from, but are not limited to, the following: Artificial Intelligence, Big Data, Cloud Computing, Cryptocurrency, Data Compression, Data Mining, Encryption, Internet of Things, Machine Learning, Microchip Implants, Multimedia, Privacy, Robotics, Security, Social Media, Wearable Technology, and Virtual Reality. This course, being a concepts course and not a programming course, is intended to be interdisciplinary in nature.
An introduction to object-oriented design and programming; algorithm analysis; data structures and container classes including arrays, lists, arraylists, stacks, queues, user-defined structures and an introduction to trees, along with associated algorithms such as insertion, removal, sorting and retrieval; introduction to recursion. Prerequisite: AUCSC 111 (2021), AUCSC 113 or AUSCI 135. Corequisite: AUSCI 235. Note: Credit may be obtained for only one of AUCSC 112 (2021) and AUCSC 211.
Introduction to modern web architectures and technologies. Web platforms and standards. Client-side/server-side programming and web languages (e.g. HTML, JavaScript, PHP, CSS, Node.js). Introduction to internet security. Design and implementation of a simple web application. Prerequisite: one of AUCSC 113 (2023) or AUSCI 135, or AUCSC 111.
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 AUCSC 211 and AUSCI 235.
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 AUCSC 211 and AUSCI 235.
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, radix-sort, and the lower bound on sorting; comparison of sorting algorithms. 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. Prerequisites: AUCSC 112, or AUCSC 211 and AUSCI 235; and AUMAT 250.
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.
Introduces students to systematic testing of software systems and how to improve software reliability and quality, and sustainability. Topics include development and use of test cases, code inspection, coverage criteria, black box testing, white box testing, fuzzing, unit and regression testing, debugging and bug fixing process, performance, energy, and sustainability testing. Prerequisites: AUCSC 220 and AUMAT 250.
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 AUCSC 211 or AUSCI 235. Corequisite: AUMAT 250.
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.
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 (2021), or AUCSC 211 and AUSCI 235. Corequisite: AUCSC 250 and AUMAT 250.
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 units 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.
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 units 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.
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.
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 250 and AUCSC 370.
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 480. Note: Credit may be obtained for only one of AUCSC 455 and AUCSC 355 (2022).
Survey of concepts and applications of artificial intelligence, including knowledge representation, state-space search, heuristic search, natural language processing, propositional logic, reasoning, and various machine learning algorithms. Prerequisites: AUCSC 310 and AUMAT 250.
Operating system functions, concurrent process coordination, scheduling and deadlocks, memory management and virtual memory, secondary storage management and file systems, protection. Prerequisites: AUCSC 250 and AUCSC 370. Note: Credit may be obtained for only one of AUCSC 480 and AUCSC 380 (2022).
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 units 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.