Home

General

What's new
Peace
UW Photos
Interviews
Jasleen
Lyrics
Software
Links
Quotes
Schools
Work
Delhi
 
Time Zones
Web Ring...huh!?

Personal

Favourites
Friends
Our fish
India & I
What Kho-Kho?
Going Global
Journeys
Zodiac
Misc
Room
Dear Diary

Computers

My CS courses
Java
Computation
Algorithms
User Interfaces
Bad clusters

Me & You

Sign Guestbook
View Guestbook
About me

< Under Construction >
U.W. Links
Family
D.P.S.

Computer Science courses I've taken

CS 130 Developing Programming Principles

  • This course teaches fundamental concepts of object-oriented computer programming.

  • Student labs are equipped with a Java development environment running under Windows 95. Students may use a Java development environment on their personal computers for course work and assignments.

  • Using, Extending, Writing Classes. UML. Instance variables. File I/O. Hashtable

  • Arrays

  • Object-Oriented Design

  • Graphical User Interfaces

  • Polymorphism

CS 134 Principles of Computer Science

  • This course introduces students to the three basic paradigms of computer science: design (from engineering), experiment (from science), and proof (from mathematics). These are introduced through study of some elementary data structures and algorithms, together with the programming mechanisms and methodologies required to implement and use them.

  • Algorithm Design, Correctness and Efficiency

  • Recursion. Binary search. Recursive sorting algorithms.

  • Abstract Data Types. Iterators. Implementations of sets, tables, stacks, queues, and trees. Implementation of
    nested procedure calls, depth-first and breadth-first traversals, and discrete event simulation. Binary search trees.

  • Discipline of Computer Science. Social impacts of computer technology. Responsibility and liability.

CS 241 Foundations of Sequential Programs

  • To describe the relationship between high-level programming languages and the computer architecture that underlies their implementation.

  • Scanning. Compiler architecture. Syntax vs. semantics. Formal languages. Regular languages, regular expressions and finite state machines.

  • Debugging in the Small 

  • Parsing. Context-free grammars, derivations, derivation trees, ambiguous grammars. Introduction to top-down and bottom-up parsing, LL(1) and LR(1) grammars.

  • Semantic Analysis. Simple code. Constructing parse trees.

  • Basic Machine Architecture. Functional components of a computer: memory, control unit, arithmetic/logic unit, input/output devices. Data representation. Machine language: operation codes, addressing modes, indexing, base registers, register designation.

  • Assemblers, Linkers and Loaders: Mnemonic op-codes, pseudo-ops, symbolic constants and addresses, literals. Assembler algorithm, linker and loader algorithms.

  • Scheme: Control structures, data structures, and naming structure. Implementation on a von Neumann machine. Procedural vs. declarative languages.

CS 251 Computer Organization and Design

  • To introduce students to theoretical and practical concepts relevant to designing digital systems. Starting from basic gate-level logic, the students advance to simple CPU architectures.

  • Number Systems and Information Representation: Binary, octal and hexadecimal number systems. One's complement, two's complement, binary addition and subtraction. Decimal and alphanumeric codes.

  • Boolean Algebra and Digital Circuits: Binary logic and gates. Standard forms, K-maps, algebraic manipulation. Symbolic representation of logic gates. Truth tables. Canonical expressions and networks.

  • Combinational Logic Design: Analysis and design procedures. Half adder, full adder, multiplexer/
    demultiplexer, encoder/decoder design.

  • Sequential Logic Design: Latches, flip-flops, analysis and synthesis procedures, state diagrams, transition tables, excitation tables.

  • Registers and Counters: Analysis and design of registers and shift registers, up/down counters.

  • Memory and Programmable Logic: RAM, ROM, PLAs, PALs, FPGAs.

  • Register Transfer: Register and bus transfer, ALU, microoperations.

  • Control Logic Design: Microprogrammed control, control of CPU, some examples, ASM design.

  • CPU Architecture: ALUs, control logic, instruction formats, CISC and RISC, pipelining.

CS 240 Data Structures and Data Management

  • To introduce students to widely used and effective methods of data organization. The course includes not only data structures and algorithms, but also the analysis of their performance and their use in database systems. The course concludes with a brief introduction to database systems and memory management.

  • Introduction to Data Structures: Abstract data type. Abstractions and representations of basic data types including trees and graphs.

  • Operations on Sets Including Dictionaries: Programming language support for sets. Linear representations (unordered, sorted by value, sorted by frequency of access). Hashing techniques including linear probing, double hashing, and separate chaining. Search trees including binary search trees, balancing, and B-trees. Analysis of the efficiency of these techniques and their merits and deficiencies for use on secondary storage.

  • Sorting and Priority Queues: Lower bounds for sorting. Algorithms for internal sorting including quicksort, mergesort, heapsort and radix sort. External sorting. Heaps and implementation of priority queues. Applications of priority queues.

  • String Matching and Data Compression: Knuth-Morris-Pratt and Boyer-Moore algorithms. Tries. Huffman and Lempel-Ziv coding.

  • Memory Management: Storage allocation. Garbage collection. Buddy system.

  • Introduction to Database Systems: The notion of a relational database. SQL as a data manipulation language. The use of efficient data structures within database systems.

CS 246 Software Abstraction and Specification

  • This course is intended to introduce students to systematic methods for designing, coding, testing, and documenting medium-sized computer programs. The principles will be taught in a practical setting.

  • Software engineering. Working in groups.

  • Introduction to C++

  • Procedural Abstraction: Logic and specification. Pre/postconditions, assertions, invariants, defensive programming. Data abstraction. Black box testing.

  • Advanced Object-oriented Programming: Inheritance and polymorphism. Multiple inheritance. Overloading of functions and operators. Basic object model. Constructors and destructors. Garbage collection. Memory management. Namespaces and packages. Higher-level abstractions. Generics. STL. Java collections.

  • Programming in the Medium: Software design. Object-oriented design. Design patterns. Testing.

  • Exceptions: Declaring, raising, and specifying exceptions. When to use exceptions.

  • Event-Based Programming

CS 342 Control Structures

  • An introduction to advanced control structures with an emphasis on concurrency and writing concurrent programs. Programming techniques and styles are examined to express complex forms of control flow, such as multi-level loop exit, data-structure iterators, exceptions, coroutines, and concurrency. Students will learn how to select appropriate control structures to solve complex programming problems.

  • C++ Programming

  • Advanced Control Flow: Multi-exit loops, multi-level exits, exceptions, iterators.

  • Coroutines: Multiple stacks, context switching. Semi and full coroutines.

  • Introduction to Concurrency: Starting multiple processes, synchronizing, and communication among processes. Ready queue, process states, interrupts.

  • Mutual Exclusion: Software and hardware solutions for critical sections. Dekker and Peterson algorithms. Test and set.

  • Semaphores: Binary and counting semaphores. Baton passing and split binary semaphores. Bounded buffer and readers/writer

  • Deadlock: Deadlock definition, examining prevention, avoidance and recovery.

  • High-Level Concurrency: Conditional critical regions, monitors, tasks. Internal and external scheduling of tasks. Rendezvous. Client/Server.

  • Increasing Concurrency: Server: buffering, secretary, administrator, workers, courier. Client: sync/async communication, tickets, call-backs, futures.

  • Other Concurrency Approaches: Threads/locks, threads/message-passing, Ada, Java.

  • Interprocess Communication: Shared versus non-shared memory.Remote procedure call.

  • Theory of Concurrency: Global invariants. Safety and liveness.

CS 360 Introduction to the Theory of Computing

  • To give a basic introduction to the theoretical foundations of computer science.

  • Finite Automata: Deterministic and non-deterministic finite automata and their equivalence. Equivalence with regular expressions. Closure properties. The pumping lemma and applications.

  • Context-free Grammars: Definitions. Parse trees. The pumping lemma for CFLs and applications. Normal forms. General parsing. Sketch of equivalence with pushdown automata.

  • Turing Machines: Designing simple TMs. Variations in the basic model (multi-tape, multi-head, non-determinism). Church-Turing thesis and evidence to support it through the study of other models.

  • Undecidability: The undecidability of the halting problem. Reductions to other problems. Reduction in general.

CS 370 Numerical Computation

  • In this course, simple but realistic examples of scientific computations are used to introduce basic algorithms and modern hardware and software environments for numerical computing.

  • Interpolation: Lagrange interpolation, spline interpolation, spline representations, mono- and bi-variate data, roots of equations. Applications: Representing hand-writing.

  • Fourier: Approximation, interpolation by Fourier series, fast Fourier transform. Application: Time series analysis, image processing, JPEG.

  • Linear Systmes: Solution of linear systems, least squares fitting, overdetermined systems, conditioning, sparse systems. Application: Analysis of data, i.e. running times for Gaussian elimination and measurement of floating point processor speed.

  • ODE: Solving differential equations. Error analysis, i.e. distinction between round-off and discretization errors, stability of computations. Application: Satellite trajectories, pursuit dynamics

 


Home 

Page updated on: 19-Feb-2002 03:40 PM

Hosted by www.Geocities.ws

1