Academic Experience


B.Eng, Computer Systems Engineering, Carleton University

Select Systems and Computer Engineering Dept. Courses

Computer Systems Foundations
SYSC 2001
"Computer architecture and organization: CPU, cache, memory, input/output, bus structures, interrupts; computer arithmetic: integer and floating point; CPU: instruction sets, addressing modes, instruction encoding. Input/output: programmed, interrupt-driven, block-oriented. Examples from several modern processor families."

Lab experience:  basic Intel assembly language programming
Data Structures and Algorithms
SYSC 2002
"In-depth experience in the design and construction of computer programs involving data structures and different programming paradigms. Data structures, formal specification, abstract data types, graphs, recursion, finite state machines and object-oriented programming."

Lab experience:  linked lists, trees, hash tables, etc, in Java.
Introductory Real-Time Systems
SYSC 2003
"Principles of event-driven systems. Review of computer organization. Assemblers and linkers. Development of embedded applications. Programming external interfaces, programmable timer. Input/output methods: polling, interrupts. Real-time issues: concurrency, mutual exclusion, buffering. Introduction to concurrent processes."

Lab experience:  assembly language programming of Intel 8086 and Motorola 68HC12 CPUs, with a concentration on interrupts.
OO Software Development
SYSC 2004
"Principles and practice of three software development paradigms with an object-oriented programming language: developing classes from scratch, reuse of existing classes, incremental extension of frameworks. Development of expertise in designing, implementing, and testing industrial-quality, reusable code."

Lab experience:  design and implementation of a simple drawing program in Java using many principles of OO programming.  Group of two.
Operating Systems & Databases
SYSC 3001
"Operating systems and databases treated from a common perspective. Management of CPU, processes, memory, files, and data. Implications of concurrency. Concurrent programming, including interprocess communication in distributed systems. Data models and query languages."

Lab experience:  mutexes, semaphores, threads, IPC, buffers, etc., under Linux.  The classic consumer/producer problem.
Systems Analysis and Design
SYSC 3100
"Creating requirements specifications prior to designing and implementing complex software systems. Software development lifecycles, role of requirements analysis; functional decomposition, dataflow modeling; database modeling, entity-relationship diagrams; finite state machines; object-oriented analysis; use cases, use case maps; project management; introduction to software design."

Lab experience:  A lot of thinking and drawing of UML diagrams.  Group of two.
Real-Time Concurrent Systems
SYSC 3303
Principles and practice of a systems engineering approach to the development of software for real-time, concurrent, distributed systems. Designing to achieve concurrency, performance, and robustness, using visual notations. Converting designs into programs. Introduction to hard real-time systems. Team project.

Lab experience:  We designed and implemented a muti-threaded TFTP server and client for transferring files.  Groups of four.  Except my group was a group of only two (started as three, but one dropped the course) during a compressed-time summer course.  Many late nights!  I've actually gotten some real-world use out of that program..
Microprocessor Systems
SYSC 3601
"Microprocessor-based system design for different microprocessor families. Microprocessors: internal organization, instruction sets, address generation, pin-outs, bus cycles, signalling waveforms. Interfacing memory and I/O devices. Interrupt structures, direct memory access. Floating point coprocessors. System bus standards. Introduction to DSPs."

Lab experience:  got to play with an ancient 8086 under threats of death should it be damaged : ).  Group of three.
Discrete Simulation/Modeling
SYSC 4005
"Simulation as a problem solving tool. Random variate generation, general discrete simulation procedure: event table and statistical gathering. Analyses of simulation data: point and interval estimation. Confidence intervals. Overview of modeling, simulation, and problem solving using SIMSCRIPT, MODSIM, and other languages."

Lab experience:  Designed and implemented a call centre simulation in Java.  Group of two.  Quite fun.
Distributed Network Processing
SYSC 4504
Software aspects of distributed networks. Client-server systems. Internet and the WWW. LAN's and WAN's, routing protocols. Transportable software, JAVA applets. Use of modern software tools in communication network monitoring and analysis. Network management.

Lab experience:  Java RMI, CORBA, mobile agents...
Computer Systems Architecture
SYSC 4507
"History of computers: evolution of concepts, influence of technology, techniques to increase performance. Detailed analysis and design of ALUs, control units, memory systems. Multiprocessor systems, pipeline and array processing. Scalable, superscalar, RISC, CISC, fault tolerant, and digital signal processing architectures."
Computer Communications
SYSC 4602
"Layered protocol architectures, OSI. Physical media, physical layer interfaces, data transmission. Data-link protocols, multiplexing, polling. LANs, IEEE 802 standards, performance. Switched Ethernets, FDDI, bridges. Wide area networks, packet-switching networks, X.25. Frame relay, internetworking, DoD protocols, TCP, UDP. ATM LANs, adaptation layers, traffic issues."
Software Engineering
SYSC 4800
"Review of software lifecycles and requirements analysis. Software design, with emphasis on methods for real-time systems. Testing, verification and validation, quality assurance and control. Project planning and management. Maintenance and configuration management. Software reuse during design and maintenance."

More UML.  Introduction to the Object Constraint Language.  Open/closed strict/relaxed architecture.
Computer Systems Design Lab
SYSC 4805
"Developing professional-level expertise in selected, important areas of the field by applying, honing, integrating, and extending previously acquired knowledge in team projects in the laboratory. Lecture periods are devoted to new knowledge required for the selected areas, to project-related issues, and to student presentations."

Lab experience:  designed and implemented an air-traffic control system for an airline using Rational Rose RealTime.  Group of four.

Select Electrical Engineering Dept. Courses

Circuits and Signals
ELEC 2501
"Properties of signals. Basic circuit elements: voltage and current sources. Kirchhoff's laws, linearity, superposition. Thevenin and Norton's theorems. Circuit simplification. AC steady-state analysis: impedance, admittance, phasors, frequency response. Transient response of RL and RC circuits: form of response, initial and final conditions. RLC circuits: resonance."
Switching Circuits
ELEC 2607

"Boolean algebra, gate, combinatorial circuits. DeMorgan notation, sum-of-product and product-of-sum forms. Logic arrays, PLAs and PALs. Flip-flops, latches, sequential circuits, state graphs and state minimization. Counters and controllers. Hazards. Asynchronous sequential circuits, race free assignment, realization."

One of my favourite courses:  lots of logic; not so much dull memorization.  "Figuring out" is so much more interesting than "calculating."
Electronic Materials, Devices and Transmission Media
ELEC 4705
"Review of solid-state theory, conductors, semiconductors, superconductors, insulators, and optical and magnetic properties. Devices used in modern high speed electronic and communication systems: transistors, lasers, photodiodes, fiber optics, Josephson junctions. Implications of material properties on fabrication and operation of devices and circuits."

Lots of quantum theory.  Mind bending.


page made quickly using Mozilla Composer (i.e. the coding is poor)