![]() na hi jnyanen sadrusham pavitramih vidyate There is nothing as purifying as knowledge. |
I hear and I think, I see and I remember, I do and I know. -- Confucius |
CEG 730 is called Distributed Computing Principles, and focuses on principles and only barely touches upon practical technologies. CEG 830 is called Distributed Computing Systems, and we concentrate on the latest technology, and some theory.
Software "Engineering" is a passion of mine. Alas, it does not deserve yet to be called an engineering field. I try to teach software engineering courses with a higher-than-normal dose of discrete math, logic, and programming. CEG 460/660 is the undergraduate version, and CEG 760 is the graduate level one.
I had taught a graduate-level course CEG 761 a few times. This course used to contain a fairly deep discussion of OOP terms, including delegation, closure, etc. Students would write a 5-page program in one of the less-well-known languages such as Modula-3 or Self. Currently, all my OOP teaching is based on Java.
I have taught OS courses perhaps twenty times.
Designed the course. This course is concerned with languages and systems that are currently in use widely, such as C++, Java, Unix, and Windows. While it is likely that these specific systems will be replaced by others, the underlying structure of systems software and interfaces will last longer, and that is the primary pedagogical goal of this course.
Catalog Description: Monitors, bootstrap and regular loaders, device drivers, kernels, multi-tasking. Systems implementation languages, The Language. Extensible editors. Tag files. Makefiles. Debugging. Revision control. The C standard libraries. Memory allocation, file io, database, signal handling, setjmp and longjmp. Shell Programming. Graphical windowing systems, user interfaces. Client-Server architecture. Programming in Windows and X11.
This course is about the foundations and principles involved in distributed systems with an introduction to recent systems and languages.
Catalog Description: Proper definition of semaphore. Starvation-free mutual exclusion. Ordinary and distributed algorithms expressed in SR. Asynchronous and synchronous message passing. Remote Procedure Calls, Clients and Servers. Threads. Distributed languages: SR, Linda, Hermes. Libraries for distributed computing, Distributed operating systems.
Catalog Description: Distributed Programming in SR, and in older languages. Sun XDR and RPC. Marshaling arbitrary data structures. Distributed File Systems: Caches and replication. Sun NFS. Log-structured file systems. Mobility of Processes and Objects: Using idle workstations. Checkpointing and rollback recovery. Distributed Operating Systems: Processor pools. Load balancing algorithms. Micro-kernels. Design Methodology: Derivation of provably correct algorithms. Specification of concurrent objects. High level specifications of distributed applications.
Designed the course and taught it the first time (Fall 1985). So very few schools have courses on design that I include here the catalog description for it.
Catalog Description: Issues in development of software/hardware. Use and development of computer manipulatable notations - based on discrete mathematics - in specification, design, and construction of systems. Integrated design environments; test-beds, high-level debuggers, simulators, rapid prototyping facilities, verification tools, and revision control tools.
|
|
sA viDyA yA vimukTaye Knowledge liberates. |