unique visitor counter
Joel Li logo
Related links:

Listed below are some Programming classes that I have completed at Rensselaer:

\ Software Design and Documentation

Software system design methodology emphasizing use of object oriented modeling of application domains and of software systems, and emphasizing the roles of written and oral communication in software engineering. Project management and software testing. Individual and team projects include specification, software architecture, user interfaces, and documentation of the phases of a project.

\ Database Systems

Discussion of the state of practice in modern database systems, with an emphasis on relational systems. Topics include database design, database system architecture, SQL, normalization techniques, storage structures, query processing, concurrency control, recovery, security, and new directions such as object-oriented and distributed database systems. Students gain hands-on experience with commercial database systems and interface building tools.

\ Operating Systems

Discussion of various aspects of computer operating systems design and implementation. Topics include I/O programming, concurrent processes and synchronization problems, process management and scheduling of processes, virtual memory management, device management, file systems, deadlock problems, system calls, and interprocess communication.

\ Computer Graphics

Mathematics, data structures, algorithms, and programming for the pictorial synthesis of real or imaginary objects. Raster and vector graphics. Abstract and real I/O devices. Scan conversion. Filling and clipping. Graphics hardware. Color. Video controllers. Geometric transformations in 2-D and 3-D. Projections and viewing. Introduction to the X window system and widgets. Object hierarchy and the Programmer's Hierarchical Interactive Graphics System. Visible surface determination. Programming assignments in C.

\ Models of Computation

This course introduces conceptual tools for reasoning about computational processes and the languages with which they are prescribed. It bears directly upon language translation, program verification, and computability. Topics to be covered include formal languages, finite automata, pushdown automata, nondeterminism, regular expressions, context-free grammars; parsing, compiler design basics; computability, Turing machines, Church??s thesis, unsolvability and intractability.

\ Data Structures and Algorithms

Data structures and algorithms, and the mathematical techniques necessary to design and analyze them. Basic data structures: lists, associative structures, trees. Mathematical techniques for designing algorithms and analyzing worst-case and expected-case algorithm efficiency. Advanced data structures: balanced trees, tries, heaps, priority queues, graphs. Searching, sorting. Algorithm design techniques: dynamic programming, greedy algorithms, divide-and-conquer, backtracking. Example graph, string, geometric, and numeric algorithms.