|
|
 |
|
 |
|
|
| back |
| Professor Dominic Duggan | |  |
 Personal Webpage
| | Professor Dominic Duggan | | Associate Professor | | | | |
| Close
CS 520:Introduction to Operating Systems
The use and internals of modern operating systems. Lectures focus on internals, whereas programming assignments focus on use of the operating system interface. Major topics include: the process concept; concurrency and how to program with threads; memory management techniques, including virtual memory and shared libraries; file system data structures; and I/O. |
|
Close
CS 510:Principles of Programming Languages
An introduction to programming language design and implementation, with an emphasis on the abstractions provided by programming languages. Assignments involve problem-solving issues in principles of programming languages such as Scheme and ML. Recursive types and recursive functions; structural induction; abstract data types; abstract syntax; implementing languages with interpreters; static vs. dynamic scoping, closures, and state; exceptions; types: type-checking, type inference, static vs. dynamic typing; object-oriented languages: classes and interfaces, inheritance, and subtyping; polymorphism and genericity; and design patterns and the visitor pattern. |
|
Close
CS 516:Compiler Design
This course is an introduction to the structure and design of compilers. Topics include lexical analysis; syntax analysis; symbol table construction; semantic analysis; syntax-directed translation; and if time permits dataflow analysis, liveness analysis; and register allocation. The emphasis in this course is on the integration of the various parts of a compiler. Each student writes a complete compiler for a small, but substantial, language. |
|
Close
CS 526:Enterprise and Cloud Computing
This course is an introduction to programming and administration of mainframe computers, which are the backbone of modern enterprise computing. Introduction to z/OS and z/VM; protection and virtualization; total cost of ownership (TCO); converstaional Monitoring System (CMS); initial program load (IPL) and launching new virtual machines; writing scripts in REXX; interactive z/OS facilities: TSO/E, ISPF and Unix; Unix system services; JCL and SDSF; transaction management using the Java CICS API; and network programming concepts: virtual LANs, open service adapters, and hipersockets. |
|
Close
CS 548:Enterprise Software Architecture and Design
This course addresses the important engineering issues in building largescale enterprise software systems. The course emphasizes service-oriented architectures (SOA) and best practices for building service-oriented enterprises in a vendor-neutral fashion. Introduction to SOA; BPM; project management, and configuration management; Web services; mainframe services, virtualization, and data integration; application integration; legacy integration; enterprise integration; federal enterprise architecture (FEA); and case studies. |
|
Close
CS 549:Distributed Systems and Cloud Computing
Developing robust applications in distributed environments. Coursework includes developing a fault-tolerant distributed application. RPC and RMI; Web Services; application servers (e.g., JEE and Websphere). Transactions: concurrency control and recovery, distributed transactions, nested transactions, and business transactions. Models of distributed systems, impossibility results, and Byzantine failures. Protocol design and examples (2PC and 3PC). Distributed snapshots. Logical time and vector clocks. Replication for fault tolerance: primary-backup and state machine approaches, quorum consensus, and process groups. Peer-to-peer networks. |
|
Close
CS 522:Mobile Systems and Applications
This course introduces the field of mobile computing and the closely related field of pervasive computing. Topics covered include: mobile hardware, wireless communication, ubiquitous data access, resource scarcity, sensing and actuation, location and context awareness, security and privacy, design methodologies and infrastructure, and end-to-end application considerations. |
|
Close
SOC 542:Enterprise Software Architecture and Design
This course addresses the important engineering issues in building largescale enterprise software systems. The course emphasizes service-oriented architectures (SOA) and best practices for building service-oriented enterprises in a vendor-neutral fashion. Introduction to SOA; BPM; project management, and configuration management; Web services; mainframe services, virtualization, and data integration; application integration; legacy integration; enterprise integration; federal enterprise architecture (FEA); and case studies. |
|
Close
SOC 606:Introduction to Developing Internet Applications
This is a survey course of techniques and technologies for developing Internet applications, particularly for the Web. Web servers and security; three-tier client server architectures; database design and administration; and server- and client-side scripting in Web applications. The course also introduces basic software engineering principles and practices, including project management, requirements acquisition, design, testing and configuration management, reliability, security, and risk management. |
|
|
| | School: Schaefer School of Engineering & Science | | Department: Computer Science | Program: Computer Science
|
|
|
| | Research & Education |  |
| | Research | | My research interests are in tools, including semantics, for ensuring that software is "safe" and "secure." I have worked on module systems for programming-in-the-large, software adaptation for safe dynamic library updates, various extensions of object-oriented languages to enable reuse, type inference, and language-based security. My work in security leverages techniques in programming languages and software checking to establish end-to-end security properties for applications. | | Education | Bachelor of Commerce, University College, Dublin, Ireland, 1981. Master of Management Science, University College, Dublin, Ireland, 1982. M.Sc. in Computer Science, University of Maryland, College Park, Maryland, 1987. Ph.D. in Computer Science, University of Maryland, College Park, Maryland, 1990. Dissertation title: A Programming Environment Based on Types as Specifications. |
| |
| | Experience & Service |  |
| | Institutional Service | | Academic Planning and Resources Committee (APAR), 2006-8. Academic Appeals Committee. ISSA Curriculum Committee, 1999-2006. Computer Science Curriculum Committee (chair), 1999-2006. Computer Science Communications Committee (chair), 2007-present. Program Director, MS in Service Oriented Computing, 2007-present. Program Director, MS in Enterprise Computing, 2008-present. Computer Science Department Director, 2006-7. |
| |
| | Achievements & Professional Societies |  |
| | Grants, Contracts & Funds | | A Programming Environment Based on Types-as-Specifications. Individual NSERC Research Grant, 1991-4. A Type System for Software Reusability. ITRC (Ontario Institute for Technological Research Center) Center of Excellence Grant, 1991-3. With G. Cormack (P.I.), J. Ophel, P. Buhr and M. Coffin. Semantics-Based Support for Application Frameworks. Individual NSERC (Canadian National Science and Engineering Research Council) Research Grant, 1994-8. Software Engineering for Distributed Computing and Networking. Acting Principal Investigator. With A. Compagnoni, J. Geller (NJIT), D. Klappholz, N. Minsky (Rutgers), D. Naumann, Thu Nguyen (Rutgers), Y. Perl (NJIT), R. Scherl (NJIT), S. Wetzel. New Jersey Commission on Science and Technology, January 1999 to December 2004. Distributed Access Control for Accountable Systems. With J. Vitek (co-PI). National Science Foundation, Sept 2003 to August 2008. |
| | | Professional Societies | Member, Association for Computing Machinery. Member, IEEE Computer Society. |
| |
| | Selected Publications |  |
| Journals
D. Duggan and F. Bent. (1996). "Explaining type inference", Science of Computer Programming, Elsevier. 27 (1).
D. Duggan, G. Cormack and J. Ophel. (1996). "Kinded type inference for parametric overloading", Acta Informatica, Springer. (33), 21-68.
D. Duggan. (1998). "Unification with extended patterns", Theoretical Computer Science, Elsevier. (206), 1-50.
D. Duggan. (1999). "Dynamic typing for distributed programming in polymorphic languages", Transactions on Programming Languages and Systems, ACM. 21 (1), 11-45.
D. Duggan. (2001). "Higher-order substitutions", Information and Computation, Academic Press. (164), 1-53.
D. Duggan and J. Ophel. (2002). "Open and closed scopes for constrained genericity", Theoretical Computer Science, Elsevier. (275), 215-258.
D. Duggan and J. Ophel. (2002). "Type checking multi-parameter type classes", Journal of Functional Programming, Academic Press. 12 (2), 133-158.
D. Duggan. (2002). "Object type constructors", Acta Informatica, Springer. (38), 367-408.
D. Duggan. (2002). "Type-safe dynamic linking with recursive DLLs and shared libraries", Transactions on Programming Languages and Systems, ACM. 24 (6), 711-804.
T. Chothia and D. Duggan. (2004). "Abstractions for fault-tolerant global computing", Theoretical Computer Science, Elsevier. 3 (322), 567-613.
D. Duggan. (2004). "Type-based cryptographic operations", Journal of Computer Security, 12 (3-4), 485-550.
D. Duggan. (2005). "Type-based hot swapping of running libraries", Acta Informatica, Springer. 41 (4-5).
T. Chothia and D. Duggan. (2007). "Capability passing processes", Science of Computer Programming, Elsevier. (66), 184-204.
|
|
| |
|
|
|
|
|
|
|