AUCSC - Augustana Faculty - Computing Science

Offered By:
Augustana Faculty

Below are the courses available from the AUCSC subject code. Select a course to view the available classes, additional class notes, class times, and textbooks.

AUCSC 111 - Introduction to Computational Thinking and Problem Solving View Available Classes

★ 3 (fi 6)(EITHER, 3-0-3)

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 (2019).


AUCSC 112 - Data Structures and Algorithms View Available Classes

★ 3 (fi 6)(EITHER, 3-0-3)

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.


AUCSC 204 - Computing Technology in Modern Society View Available Classes

★ 3 (fi 6)(EITHER, 0-3S-0)

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.


AUCSC 218 - Web Design, Development and Scripting View Available Classes

★ 3 (fi 6)(EITHER, 3-0-1.5)

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: AUCSC 112.


AUCSC 220 - Software Engineering I View Available Classes

★ 3 (fi 6)(FIRST, 3-0-1.5)

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.


AUCSC 250 - Computer Organization and Architecture I View Available Classes

★ 3 (fi 6)(FIRST, 3-0-1.5)

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 (2019).


AUCSC 310 - Algorithm Design and Analysis View Available Classes

★ 3 (fi 6)(EITHER, 3-0-1.5)

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.


AUCSC 320 - Software Engineering II View Available Classes

★ 3 (fi 6)(SECOND, 0-4.5L-0)

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.


AUCSC 330 - Database Management Systems I View Available Classes

★ 3 (fi 6)(SECOND, 3-0-1.5)

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.


AUCSC 340 - Numerical Methods View Available Classes

★ 3 (fi 6)(EITHER, 3-0-1.5)

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.


AUCSC 350 - Computer Organization and Architecture II View Available Classes

★ 3 (fi 6)(SECOND, 3-0-1.5)

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.


AUCSC 355 - Networks and Security View Available Classes

★ 3 (fi 6)(EITHER, 3-0-1.5)

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


AUCSC 370 - Programming Languages View Available Classes

★ 3 (fi 6)(FIRST, 3-0-1.5)

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.


AUCSC 380 - Operating Systems Concepts View Available Classes

★ 3 (fi 6)(SECOND, 3-0-1.5)

Operating system functions, concurrent process coordination, scheduling and deadlocks, memory management and virtual memory, secondary storage management and file systems, protection. Prerequisites: AUCSC 250.


AUCSC 395 - Directed Study I View Available Classes

★ 3 (fi 6)(EITHER, 1-0-3)

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.


AUCSC 401 - Professional Practicum I View Available Classes

★ 3 (fi 6)(VAR, VARIABLE)

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.


AUCSC 402 - Professional Practicum II View Available Classes

★ 3 (fi 6)(VAR, VARIABLE)

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.


AUCSC 415 - Automata, Algorithms and Complexity View Available Classes

★ 3 (fi 6)(EITHER, 3-0-0)

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 (2019), 410 (2019), or AUMAT 355 (2019).


AUCSC 450 - Parallel and Distributed Computing View Available Classes

★ 3 (fi 6)(EITHER, 3-0-1.5)

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.


AUCSC 460 - Artificial Intelligence View Available Classes

★ 3 (fi 6)(EITHER, 3-0-1.5)

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.


AUCSC 490 - Social and Ethical Issues for Computing Professionals View Available Classes

★ 3 (fi 6)(EITHER, 3-0-0)

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 *15 in Computing Science; at least third-year standing.


AUCSC 495 - Directed Study II View Available Classes

★ 3 (fi 6)(EITHER, 1-0-3)

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.