Kayak

Courses

The University of Victoria

Computer Science Major



CSC 106

The Practice of Computer Science

History and Theory of Copmuter Science. Topics range from the evolution of Copmuters, binary/hex/base number presentation, types of languages, applications, design markups, statistics, basic programming

  • Python
  • Binary/Hex/Number Presentation
  • Balsamiq
  • SQL

CSC 110

Fundamentals of Programming I

Topics include an introduction to computing and problem solving, selection and iteration, arrays and collections, objects and classes, top-down design and incremental development.

  • Java
  • Loops and Conditions
  • Arrays, Matrices, and Lists
  • Multi-method programming
  • Introduction to Objects

CSC 115

Fundamentals of Programming II

Control and data abstraction, modularization, abstract data types, layers of abstraction, information hiding, separation of concerns, type checking, program design, separate compilation, software libraries, techniques for the development of high-quality software components, program understanding.

  • Java
  • Multi-Object & Class Progamming
  • Abstract Data Types
  • Binary Search Trees, Heaps
  • Queues, Stacks and Lists
  • Basic Hashing
  • Sorting Algorithms



CSC 225

Algorithms and Data Structures I

Time and Space Complexity. Data structures: stacks, queues, linked lists. Sorting: selection, insertion, bubble, mergesort, quicksort, priority queues. Searching: Binary search trees, balanced search trees, hash tables. Graphs: undirected and directed graphs, graph traversals and applications, topological sort. Greedy, backtracking, divide and conquer.

  • Java
  • Time and Space Complexity
  • Binary Search, AVL, Recursion trees
  • Graphs and Traversals

CSC 226

Algorithms and Data Structures II

Greedy, divide-and-conquer, dynamic programming, backtracking, branch and bound. Techniques such as amortization. Advanced data structures: hashing, disjoint sets. Advanced graph algorithms: network flow, connectivity, minimum spanning trees, shortest paths. Mathematical tools: graphs and digraphs, graph properties, planar graphs, networks; discrete probability, counting techniques, recurrences, substring algorithms.

  • Java
  • Counting, Binomial Theorem, Combinations, Permutations
  • 2-3, Red-Black Trees
  • Prim's, Kruskal's, Boruvka's, Dijkstra's Algorithm

CSC 230

Introduction to Computer Architecture

Concepts such as CPU, memory, buses, I/O, cache, instruction sets, interrupt processing, pipelining, performance. Memory organization and management (including virtual memory, protection, segmentation and paging). Computer arithmetic. The use of assemblers, linkers and loaders. Assembly language programming and its interface with a high-level language (C).

  • Assembly
  • Arduino
  • ATMega 2560 board
  • C



SENG 265

Software Development Methods

Systematic methods for designing, coding, testing and documenting programs. Tools and techniques for programming and software quality. Topics include specifications, code testing and debugging methods/tools, reusable software components and templates, file system navigation, scripting languages, software tools, and the fundamentals of software configuration management.

  • C
  • Python
  • Bash
  • Object-Oriented Programming
  • Dynamic-Memory Programming

CSC 320

Foundations of Computer Science

Learn about computing machinese such as: finite automotas, push-down automotas, turing machines. Also look at concepts such as: regular and non-regular languages, regular expressions, halting problem, undecidability, reductions, pumping lemma etc.

  • Deterministic and Non-Deterministic Finite Automatas
  • Pushdown Automotas
  • Turing Machines
  • Regular and Non-Regular Languages
  • Pumping Lemma
  • Halting Problem
  • Undecidability
  • Reductions

CSC 361

Computer Communications and Networks

Computer networks and communication. The structure of the internet (4 layer model): Application, Transport, Network, Link. Python socket programming. Packet Analysis in Wireshark.

  • Python Socket Programming
  • Mininet
  • Wireshark
  • TCP/UDP



SENG 310

Human Computer Interaction

A Design Course based on Human behaviour and approaches to Computer Interaction. Projects and Assignments focus on designing and analyzing interfaces, models, case studies, low/high fidelity markups, and designing an application. The themes were heavily based off cognitive walkthroughs and usability studies.

  • Balsamiq
  • Figma
  • Story Boarding

CSC 360

Operating Systems

Focusing on the relationships between the operating system and the architecture of computers. Topics mainly focused on multi-process and multi-threading theory, coding, and applications. Additionally, a deeper look into memory management and file systems was introduced.

  • C
  • Multiprocesses
  • Multithreading
  • File Systems and Memory

CSC 370

Database Systems

Learn about the theory of database systems, what makes a good database system, how to traverse and/or query for wanted information, and database language syntax. Theory mainly focused on rational algebra, entity relationship models, and database normal forms (1, 2, 3, 4, and BCNF).

  • Relational Algebra
  • SQL, Postgre SQL
  • DBeaver



CSC 421

Introduction to Artificial Inteligence

Introduction to the theory behind AI. Topics covered consisted of solving problems through Searching, Exploration, Logic and Inference, Knowledge Representation, Learning, and Statistical Methods.

SENG 401

Social and Professional Issues

Currently Enrolled...

CS 330

Programming Languages

Currently Enrolled...