Graduate Coursework - Computer Science
Final GPA: 3.96
This internship is an ongoing seminar between the student, faculty and the employment supervisor. It involves a Learning Contract Information, periodic meetings with the faculty representative, and professional experience at a level equivalent to other electives of the MSCS program.
Analysis of Algorithms
This course covers various algorithm design paradigms, mathematical analysis of algorithms, empirical analysis of algorithms and NP-completeness.
Issues in Database Management
This course focuses on the fundamental design considerations in designing a database. Specific topics include performance analysis of design alternatives, system configuration and the administration of a popular database system. The course also offers an in-depth analysis of the algorithms and machine organizations of database systems.
Object-Oriented Design & Practice
This course surveys current practices in software development and software design, especially in the area of object-oriented design. The course will examine and contrast current and leading edge methodologies and practices, including agile, extreme programming, test-driven design, patterns, aspect-oriented programming, model-driven architecture, Unified Modeling Language, and integrated development environments.
This course introduces the design of distributed computing systems and distributed application programming. Major concepts of distributed systems covered include: transparency, heterogeneity, process communication, consistency, fault tolerance, and security. Students will also learn to develop a real-world distributed application as a RESTful Web-service on an application server.
Communication Strategies for the Technical Professional
This course focuses on the problems, principles and techniques of communicating technical and scientific information. Types of communication addressed include: proposals, reports and manuals. The course uses a case-study approach to give students both the theoretical foundations and hands-on practice they need to work effectively in heterogeneous corporate groups.
Applications of Artificial Intelligence
This course focuses on the use of artificial intelligence tools and techniques in industry. Topics include cognitive psychology topics, foundation material (e.g., search algorithms, knowledge representation and AI languages) and tools (e.g., expert systems, natural language interfaces and neural networks).
Software Verification and Testing
This course focuses on the issues of delivering high quality software, especially in large complex systems. Topics covered include testing strategies (black box, white box, regression, etc.), unit testing, system integration, system verification and support tools. It also will reinforce the need for requirements that are testable and traceable from the early design stages.
This course challenges students to research a current topic of interest in Computer Science and produce an original paper and presentation on the topic. In addition to the research paper, students are introduced to the economics of software development and the tools needed to estimate the cost of a software development project for management in a corporate environment. The last topic in the course is a discussion of ethics as it relates to Information Technology.
Prereq. Coursework - Computer Science
Intro to Object-Orieted Programming
This course provides an introduction to software construction using an object-oriented approach. The student learns and reflects on problem analysis, object-oriented design, implementation, and testing. To support the concepts and principles of software construction, the student will design, code, test, debug, and document programs using the Java programming language. Basic data types, control structures, methods, and classes are used as the building blocks for reusable software components. Automated unit testing, programming style, and industrial practice are emphasized in addition to the object-oriented techniques of abstraction, encapsulation, and composition.
Object Oriented Data Structures & Algorithms
This course continues the object-oriented approach to software construction. The student learns and reflects on advanced object-oriented techniques, algorithm efficiency, class hierarchies, and data structures. To support the concepts and principles of software construction, the student will design, code, test, debug, and document programs using the Java programming language. Design principles, I/O, exception handling, linear data structures (lists, stacks, and queues), and design patterns are emphasized in addition to the object-oriented techniques of inheritance and polymorphism.
Discrete Mathematics for Computing
This course introduces students to the logic and mathematical structures required for computer programming. Elementary logic, set theory and Boolean algebra are introduced. Functions and relations are emphasized, along with types of functions common in business or scientific applications, properties of functions such as domain, range, and one-to-one functions, and recursion. Mathematical structures like summations and sequences, elementary probability and vectors are also introduced. Data types, number systems such as binary and hexadecimal, right angle trigonometry, and applications of algebra are also introduced.