Courses (Undergraduate Work)
Note: Whatever you download from this site you are doing so at your own risk.
CPSC 200 (Dr. David Casperson): Data Structures and Algorithm Analysis
Fall 2001
Topics include: Asymptotic complexity and notation, Algorithm analysis, Comparison of various sorting algorithms, NP completeness,
Assertions, loop and data type invariants and an introduction to program correctness, Correctness proofs of simple programs,
Recursion relationships.Materials available to download include a zipped file containing source code for the various homework
exercises (like the famous sorting exercise). To download click on the link below.
CPSC 231 (Dr. Desa Polajnar): Computer Architecture I
Fall 2001
Topics include: Principles of digital circuit design, boolean algebra, basic switching functions and gate-level implementation,
canonical forms, algebraic simplifications, Karnaugh maps, Quine-McCluskey tables, voltage assignments, logic technologies,
combinatorial logic circuits, decoders, encoders, multiplexers, demultiplexers, comparators, adders, sequential logic circuits,
clocked flip-flops, registers, counters, register transfer logic, central processing unit, instruction set, addressing modes,
arithmetic and logic units, control unit, bus organization. Designing a minicomputer PDP-8.
To download the course material click on the link below.
CPSC 281 (Dr. Liang Chen): Data Structures I
Fall 2001
Topics include: Program performance, data representation, arrays and matrices, lists, stacks and queues, skip lists and hashing, binary trees, balanced and B-trees, AVL trees, splay trees, tree traversals using stacks, expression trees, prefix, infix, and postfix expressions and conversions, priority queues and heaps, search trees, Huffman codes, graphs, graph algorithms (weighted and unweighted shortest- path, Dijkstra's algorithm, critical paths), minimum-cost spanning trees (Prim's, Kruskal's, and Solin's algorithms). Implementation of various data structures using object- oriented programming language.
In this class we had to complete numerous data-structure's programming assignments mostly using C++. Some of them were the 8-Queens problem (which utilized stacks) & Medical Clinic simulation (using queue's).
To download the course material click on the link below.
CPSC 320 (Dr. Jernej Polajnar): Programming Languages
Winter 2002
Basic programming language concepts; syntax, semantics, and pragmatics; basic types of formal grammars and automata; context-free grammars, parse trees, associativity and precedence, ambiguity, EBNF and syntax diagrams; data types, memory models, control structures, definitions and blocks, abstraction mechanisms, parameter passing, binding of global names; type checking and type conversion; denotational description of programming languages; object- oriented, functional, and logic programming paradigms; languages for concurrent and distributed programming. The course includes examples and case studies from a variety of languages, as well as programming assignments emphasizing the use of their specific features.
The only project in this class was to write a paper on a language that we could choose and then applying the theoretical concepts learned in this class. All the course related material can be downloaded by clicking on the link below.
CPSC 321 (Dr. Jernej Polajnar): Operating Systems
Fall 2003
Tasking and processes, process co-ordination and synchronization, scheduling and dispatch, physical and virtual memory organization, paging and segmentation, device management, file systems, security and protection, communications and networking, distributed and real-time systems. Students will study a simple operating system and will have an opportunity to make modifications to it in laboratory exercises.
In this class we studied the Nachos operating system. Initially it was a single-threaded system which we had to convert to multi-threaded. Also initially it utilized the file-system of whatever OS it was run on, in our case that was Solaris. In the last exercise we had to implement a file system for Nachos. Other exercises included concurrency control & implementing virtual memory.
All the course related material can be downloaded by clicking on the link below.
CPSC 325 (Dr. Siamak Rezaei): Introduction to Compiler Design
Winter 2004
Introduction to programming language translation. Compilers, interpreters, and other language processors. The phases of a compiler. Lexical analysis and scanner design. Syntax analysis and parsing techniques. Semantic analysis and code generation. Compile-time and run-time aspects of semantics. Execution environment and run-time support. Code optimization. Testing. The students will design and implement a compiler for a small Pascal-like language.
The language we wrote the compiler for was called C-Minus. It was based on a sub-set of the C programming language. It was limited to just two types int & void and you could have arrays as well as recursive functions. There were four phases involved in the development of this project Scanning Phase (where the input file was tokenized), Parsing Phase (where the tokens were fed to the parse and a parse tree constructed), the Semantic Analysis Phase (where the parse tree was annotated and meaning determined) and finally the Code Generation (where code was generated to be run on a virtual machine).
All the course related material can be downloaded by clicking on the link below.
CPSC 370 (Dr. Charles Brown): Functional and Logic Programming
Fall 2003
Introduction to programming in symbolic languages such as the functional language Scheme and the logic programming language PROLOG, with applications to systems programming, symbolic computation, artificial intelligence, and other areas.
Languages used in this class were PROLOG and LISP.
All the course related material can be downloaded by clicking on the link below.
CPSC 422 (Dr. Siamak Rezaei): Database Systems
Fall 2003
The course covers relational, hierarchical, and network systems, storage structure and access methods, data definition and data manipulation language, SQL, relational data structure, relational algebra and calculus, query optimization, recovery and concurrency, security and integrity, introduction to functional dependencies, normalization, 1NF, 2NF, 3NF and BCNF. A relational DBMS and data processing software will be used for understanding SQL and other concepts.The Course involved doing few small assignments and one major project. We (group of three) students did the "Book Buy Back" Project which can be demonstrated using the following link
Demo
All the course related material can be downloaded by clicking on the link below.
CPSC 440 (Dr. Rezaei): Database Systems
Winter 2004
Topics: Data transmission and encoding, multiplexing, circuit switching, packet switching, network protocols, data communication hardware, ISO model, Data Link Layer, Network Layer, Local Area Networks (LANs), Wide Area Networks (WANs), Metropolitan Area Networks (MANs), Backbone Networks (BNs), network design and implementation, network management, and network security.
This class had numerous projects ranging from programming assignments to papers based on networking concepts and/or issues.
All the course related material can be downloaded by clicking on the link below.
CPSC 442 (Dr. Siamak Rezaei): Parallel Computing
Winter 2004
Topics: Introduction, Message Passing parallelism, Shared Memory Parallelism, MPI, OpenMP, Thread programming, Linda, CSP and formal models for Parallel Processing, Visualization.
All the course related material can be downloaded by clicking on the link below.
CPSC 499 (Dr. Behcet Sarikaya): Mobile Computing
Fall 2003
Topics: Ubiquitous access to information, anywhere, anyplace, and anytime, will characterize whole new kinds of information systems in the 21st Century. These are being enabled by rapidly emerging wireless communications systems, based on radio and infrared transmission mechanisms, and utilizing such technologies as cellular telephony, personal communications systems, wireless PBXs, and wireless local area networks. These systems have the potential to dramatically change society as workers become "untethered" from their information sources and communications mechanisms. While there is a rich body of knowledge associated with radio system engineering, the needed expertise must build upon this to encompass network management, integration of wireless and wireline networks, system support for mobility, computing system architectures for wireless nodes/base stations/servers, user interfaces appropriate for small handheld portable devices, and new applications that can exploit mobility and location information.
All the course related material can be downloaded by clicking on the link below.