In order to see more information about any course, simply click on it!
This view does not contain classes that have not been offered in the past 2 years. If you want to view those classes click here: All Courses
Introduction to Computational Thinking and Problem Solving
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: 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.
Computer Organization and Architecture I
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: 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.
Computer Organization and Architecture II
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: 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: 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.
Automata, Algorithms and Complexity
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.
Parallel and Distributed Computing
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: 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.
Social and Ethical Issues for Computing Professionals
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.