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
Topics include an introduction to computing and problem solving, selection and iteration, arrays and collections, objects and classes, top-down design and incremental development.
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.
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.
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.
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).
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.
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.
Computer networks and communication. The structure of the internet (4 layer model): Application, Transport, Network, Link. Python socket programming. Packet Analysis in Wireshark.
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.
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.
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).
Introduction to the theory behind AI. Topics covered consisted of solving problems through Searching, Exploration, Logic and Inference, Knowledge Representation, Learning, and Statistical Methods.
Currently Enrolled...
Currently Enrolled...