This is an introductory programming course using the Java language. The topics include: basic facts about object-oriented programming and Java through inheritance and exceptions; recursion; UML diagrams and how to read class diagrams; ethics in computer science; and some basic understanding about computer systems: the compile/link/interpret/ execute cycle and data representation.
This course introduces students to the infrastructure underlying the Web, including protocols and markup languages. It also addresses the question of how one presents large volumes of information to people who need to find out what they are looking for quickly. The scope of the course ranges from mechanics to aesthetics. Social and ethical issues are also discussed, including the concept of information ecologies for social acceptance. Networks and protocols; pervasive computing; Web protocols; markup languages and XML; defining information architecture; understanding information needs and information-seeking behaviors; organizing Web sites and intranets; navigation systems; search systems; thesauri; from research to design: strategies for information architecture; enterprise information architecture; ethics on the Web; and information ecologies.
Continues from MA 115 with improper integrals, infinite series, Taylor series, and Taylor polynomials. Vectors operations in 3-space, mathematical descriptions of lines and planes, and single-variable calculus for parametric curves. Introduction to calculus for functions of two or more variables including graphical representations, partial derivatives, the gradient vector, directional derivatives, applications to optimization, and double integrals in rectangular and polar coordinates.
An introduction to differential and integral calculus for functions of one variable. The differential calculus includes limits, continuity, the definition of the derivative, rules for differentiation, and applications to curve sketching, optimization, and elementary initial value problems. The integral calculus includes the definition of the definite integral, the Fundamental Theorem of Calculus, techniques for finding antiderivatives, and applications of the definite integral. Transcendental and inverse functions are included throughout. Close
An introduction to differential and integral calculus for functions of one variable. The differential calculus includes limits, continuity, the definition of the derivative, rules for differentiation, and applications to curve sketching, optimization, and elementary initial value problems. The integral calculus includes the definition of the definite integral, the Fundamental Theorem of Calculus, techniques for finding antiderivatives, and applications of the definite integral. Transcendental and inverse functions are included throughout. Close
This is a course on standard data structures, including sorting and searching and using the Java language. The topics include: stages of software development; testing; UML diagrams; elementary data structures (lists, stacks, queues, and maps); use of elementary data structures in application frameworks; searching; sorting; and introduction to asymptotic complexity analysis. Corequisites: CS 135
Discrete Structures (3-2-0)
(Lecture-Lab-Study Hours)
The aim of this course is to integrate knowledge of basic mathematics with the problems involving specification, design, and computation. By the end of the course, the student should be able to: use sets, functions, lists, and relations in the specification and design of problems; use properties of arithmetic, modular arithmetic (sum, product, exponentiation), prime numbers, greatest common divisor, factoring, Fermat?s little theorem; use binary, decimal, and base-b notation systems and translation methods; use induction to design and verify recursive programs; and implement in Scheme all algorithms considered during the course. Close
This course provides the background necessary for advanced study of mathematics or computer science. Topics include propositional calculus, predicates and quantifiers, elementary set theory, countability, functions, relations, proof by induction, elementary combinatorics, elements of graph theory, mends, and elements of complexity theory. Close
This is an introductory programming course using the Java language. The topics include: basic facts about object-oriented programming and Java through inheritance and exceptions; recursion; UML diagrams and how to read class diagrams; ethics in computer science; and some basic understanding about computer systems: the compile/link/interpret/ execute cycle and data representation. Close
This is an introductory programming course using the Java language. The topics include: basic facts about object-oriented programming and Java through inheritance and exceptions; recursion; UML diagrams and how to read class diagrams; ethics in computer science; and some basic understanding about computer systems: the compile/link/interpret/ execute cycle and data representation. Close
This course provides the background necessary for advanced study of mathematics or computer science. Topics include propositional calculus, predicates and quantifiers, elementary set theory, countability, functions, relations, proof by induction, elementary combinatorics, elements of graph theory, mends, and elements of complexity theory.
Using an applied and experiential format, this course exposes students to theory, methods and research in organizational behavior and social psychology. Topics relating to individual differences and group dynamics in organizational settings are stressed. Learning occurs through discussion, group activities, and the completion of assessment instruments. Emphasis is on helping students understand and improve their skills in key areas, including decision-making, leadership, negotiation, and conflict resolution.
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques.
Getting acquainted with C++: data types, input and output, functions, writing simple C++ programs, flow control, Boolean expressions, decision statements, if/then, and switch/case. Loop operations, while, do/while, and for loops. Arrays and pointers. Defining structs and classes, constructors and destructors, and operator overloading using an example String class. Templates. Abstract data types: vectors, lists, stacks, queues, and priority trees with applications. Trees and simple sorting with searching algorithms. By invitation only. Students who complete this class are exempt from CS 115 and CS 284. Close
This is a course on standard data structures, including sorting and searching and using the Java language. The topics include: stages of software development; testing; UML diagrams; elementary data structures (lists, stacks, queues, and maps); use of elementary data structures in application frameworks; searching; sorting; and introduction to asymptotic complexity analysis. Close
Introduction to recursive functional programming and equational reasoning; lists as inductive types and list induction; introduction to formal languages, automata, and the theory of computation; regular expressions, finite state machines, and pumping lemma; context free grammars and push down automata; turing machines, recursive enumerability, and unsolvable problems; and complexity and intractability. A number of models of computation are considered, as well as their relation to various problem classes (e.g. solvable problems and polynomial time solvable problems). Some experiments are performed that involve writing small Scheme programs. Corequisites: CS 135
Discrete Structures (3-2-0)
(Lecture-Lab-Study Hours)
The aim of this course is to integrate knowledge of basic mathematics with the problems involving specification, design, and computation. By the end of the course, the student should be able to: use sets, functions, lists, and relations in the specification and design of problems; use properties of arithmetic, modular arithmetic (sum, product, exponentiation), prime numbers, greatest common divisor, factoring, Fermat?s little theorem; use binary, decimal, and base-b notation systems and translation methods; use induction to design and verify recursive programs; and implement in Scheme all algorithms considered during the course. Close
This is an introductory programming course using the Java language. The topics include: basic facts about object-oriented programming and Java through inheritance and exceptions; recursion; UML diagrams and how to read class diagrams; ethics in computer science; and some basic understanding about computer systems: the compile/link/interpret/ execute cycle and data representation. Close
Introduction to systems programming in C on UNIX. Students will be introduced to tools for compilation, dynamic linking, debugging, editing, automatic rebuilding, and version control. Some aspects of the UNIX system call interface will be studied, drawn from this list: process creation, signals, terminal I/O, file I/O, inter-process communication, threads, network protocol stacks, programming with sockets, and introduction to RPC. Style issues to be covered include: naming, layout, commenting, portability, design for robustness and debugability, and language pitfalls. X programming and GUI design will be covered, if time allows.
Introduction to Computer Science Honors II (4-0-0)
(Lecture-Lab-Study Hours)
Advanced programming concepts covering classical data structures and object-oriented programming. Emphasis will be on building a collection of re-usable software components that will form the basis of future programming efforts. The data structures covered include lists, stacks, queues, trees, binary search trees, and balanced search trees. The object-oriented features of Java covered include classes, templates, inheritance, polymorphism and run-time binding. Also included is a discussion of the analysis of asymptotic running times of algorithms. Close
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
This course provides a general introduction to the essentials of the software development process, that series of activities that facilitate developing better software in less time. The course introduces software development and deployment life cycles, requirements acquisition and analysis, software architecture and design, and resource management and scheduling in the implementation phase. Students gain experience with tools and methodologies for configuration management and project management. Security engineering is considered as an essential part of the software development process, particularly from the standpoint of applied risk management.
Getting acquainted with C++: data types, input and output, functions, writing simple C++ programs, flow control, Boolean expressions, decision statements, if/then, and switch/case. Loop operations, while, do/while, and for loops. Arrays and pointers. Defining structs and classes, constructors and destructors, and operator overloading using an example String class. Templates. Abstract data types: vectors, lists, stacks, queues, and priority trees with applications. Trees and simple sorting with searching algorithms. By invitation only. Students who complete this class are exempt from CS 115 and CS 284. Close
This is a course on standard data structures, including sorting and searching and using the Java language. The topics include: stages of software development; testing; UML diagrams; elementary data structures (lists, stacks, queues, and maps); use of elementary data structures in application frameworks; searching; sorting; and introduction to asymptotic complexity analysis. Close
The aim of this course is to integrate knowledge of basic mathematics with the problems involving specification, design, and computation. By the end of the course, the student should be able to: use sets, functions, lists, and relations in the specification and design of problems; use properties of arithmetic, modular arithmetic (sum, product, exponentiation), prime numbers, greatest common divisor, factoring, Fermat?s little theorem; use binary, decimal, and base-b notation systems and translation methods; use induction to design and verify recursive programs; and implement in Scheme all algorithms considered during the course. Close
Introduces the essentials of probability theory and elementary statistics. Lectures and assignments greatly stress the manifold applications of probability and statistics to computer science, production management, quality control, and reliability. A statistical computer package is used throughout the course for teaching and for assignments. Contents include: descriptive statistics, pictorial and tabular methods, and measures of location and of variability; sample space and events, probability axioms, and counting techniques; conditional probability and independence, and Bayes' formula; discrete random variables, distribution functions and moments, and binomial and Poisson distributions; continuous random variables, densities and moments, normal, gamma, and exponential and Weibull distributions unions; distribution of the sum and average of random samples; the Central Limit Theorem; confidence intervals for the mean and the variance; hypothesis testing and p-values, and applications for the mean; simple linear regression, and estimation of and inference about the parameters; and correlation and prediction in a regression model.
Continues from MA 115 with improper integrals, infinite series, Taylor series, and Taylor polynomials. Vectors operations in 3-space, mathematical descriptions of lines and planes, and single-variable calculus for parametric curves. Introduction to calculus for functions of two or more variables including graphical representations, partial derivatives, the gradient vector, directional derivatives, applications to optimization, and double integrals in rectangular and polar coordinates. Close
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, 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. Corequisites: CS 182 or
Introduction to Computer Science Honors II (4-0-0)
(Lecture-Lab-Study Hours)
Advanced programming concepts covering classical data structures and object-oriented programming. Emphasis will be on building a collection of re-usable software components that will form the basis of future programming efforts. The data structures covered include lists, stacks, queues, trees, binary search trees, and balanced search trees. The object-oriented features of Java covered include classes, templates, inheritance, polymorphism and run-time binding. Also included is a discussion of the analysis of asymptotic running times of algorithms. Close
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
Introduction to recursive functional programming and equational reasoning; lists as inductive types and list induction; introduction to formal languages, automata, and the theory of computation; regular expressions, finite state machines, and pumping lemma; context free grammars and push down automata; turing machines, recursive enumerability, and unsolvable problems; and complexity and intractability. A number of models of computation are considered, as well as their relation to various problem classes (e.g. solvable problems and polynomial time solvable problems). Some experiments are performed that involve writing small Scheme programs. Close
Introduction to the design and querying of relational databases. Topics include: relational schemas; keys and foreign key references; relational algebra (as an introduction to SQL); SQL in depth; Entity-Relationship (ER) database design; translating from ER models to relational schemas and from relational schemas to ER models; functional dependencies; and normalization.
Introduction to Computer Science Honors II (4-0-0)
(Lecture-Lab-Study Hours)
Advanced programming concepts covering classical data structures and object-oriented programming. Emphasis will be on building a collection of re-usable software components that will form the basis of future programming efforts. The data structures covered include lists, stacks, queues, trees, binary search trees, and balanced search trees. The object-oriented features of Java covered include classes, templates, inheritance, polymorphism and run-time binding. Also included is a discussion of the analysis of asymptotic running times of algorithms. Close
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
Requirements Acquisition is one of the least understood and hardest phases in the development of software products, especially because requirements are often unclear in the minds of many or most stakeholders. This course deals with the identification of stakeholders, the elicitation and verification, with their participation, of the requirements for a new or to-be-extended software product. It deals further with the analysis and modeling of requirements, the first steps in the direction of software design. Finally, it deals with the quality assurance aspects of the software requirements phase of the software development process. This course is case-history and project-oriented, and uses industry-standard software tools.
This is a course on more complex data structures, and algorithm design and analysis, using the C++ language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
An introduction to statistical inference and to the use of basic statistical tools. Topics include descriptive and inferential statistics; review of point estimation, method of moments, and maximum likelihood; interval estimation and hypothesis testing; simple and multiple linear regression; analysis of variance and design of experiments; and nonparametric methods. Selected topics, such as quality control and time series analysis, may also be included. Statistical software is used throughout the course for exploratory data analysis and statistical inference based in examples and in real data relevant for applications.
Introduces the essentials of probability theory and elementary statistics. Lectures and assignments greatly stress the manifold applications of probability and statistics to computer science, production management, quality control, and reliability. A statistical computer package is used throughout the course for teaching and for assignments. Contents include: descriptive statistics, pictorial and tabular methods, and measures of location and of variability; sample space and events, probability axioms, and counting techniques; conditional probability and independence, and Bayes' formula; discrete random variables, distribution functions and moments, and binomial and Poisson distributions; continuous random variables, densities and moments, normal, gamma, and exponential and Weibull distributions unions; distribution of the sum and average of random samples; the Central Limit Theorem; confidence intervals for the mean and the variance; hypothesis testing and p-values, and applications for the mean; simple linear regression, and estimation of and inference about the parameters; and correlation and prediction in a regression model. Close
The study of concurrency as it appears at all levels and in different types of computing systems. Topics include: models of concurrency; languages for expressing concurrency; formal systems for reasoning about concurrency; the challenges of concurrent programming; race conditions; deadlock; livelock and nondeterministic behavior; prototypical synchronization problems, such as readers-writers and dining philosophers; mechanisms for solution of these problems, such as semaphores, monitors, and conditional critical regions; important libraries for concurrent programming; message passing, both synchronous and asynchronous; and applications of multithreaded concurrent programming and parallel algorithms. Substantial programming required.
This is a course on more complex data structures, and algorithm design and analysis, using the C++ language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
This course will provide students with a first strong approach of internet programming. It will give the basic knowledge on how the Internet works and how to create advanced web sites by the use of script languages, after learning the basics of HTML. The course will teach the students how to create a complex global site through the creation of individual working modules, giving them the skills required in any business such as proper team work and coordination between groups.
Introduction to the design and querying of relational databases. Topics include: relational schemas; keys and foreign key references; relational algebra (as an introduction to SQL); SQL in depth; Entity-Relationship (ER) database design; translating from ER models to relational schemas and from relational schemas to ER models; functional dependencies; and normalization. Close
Introduction to the design and querying of relational databases. Topics include: relational schemas; keys and foreign key references; relational algebra (as an introduction to SQL); SQL in depth; Entity-Relationship (ER) database design; translating from ER models to relational schemas and from relational schemas to ER models; functional dependencies; and normalization. Close
Introduction to the design and querying of relational databases. Topics include: relational schemas; keys and foreign key references; relational algebra (as an introduction to SQL); SQL in depth; Entity-Relationship (ER) database design; translating from ER models to relational schemas and from relational schemas to ER models; functional dependencies; and normalization.
Introduction to Web Programming and Project Development (3-0-0)
(Lecture-Lab-Study Hours)
This course introduces students to the infrastructure underlying the Web, including protocols and markup languages. It also addresses the question of how one presents large volumes of information to people who need to find out what they are looking for quickly. The scope of the course ranges from mechanics to aesthetics. Social and ethical issues are also discussed, including the concept of information ecologies for social acceptance. Networks and protocols; pervasive computing; Web protocols; markup languages and XML; defining information architecture; understanding information needs and information-seeking behaviors; organizing Web sites and intranets; navigation systems; search systems; thesauri; from research to design: strategies for information architecture; enterprise information architecture; ethics on the Web; and information ecologies. Close
Fundamentals of Service Oriented Computing (3-0-0)
(Lecture-Lab-Study Hours)
This course introduces students to the infrastructure underlying the Web, including protocols and mark-up languages. It also addresses the question of how one presents large volumes of information to people who need to find out what they are looking for quickly. The scope of the course ranges from mechanics to aesthetics. Social and ethical issues are also discussed, including the concept of information ecologies for social acceptance. Networks and protocols; pervasive computing; Web protocols; markup languages and XML; defining information architecture; understanding information needs and information-seeking behaviors; organizing Web sites and intranets; navigation systems; search systems; thesauri; from research to design: strategies for information architecture; enterprise information architecture; ethics on the Web; and information ecologies. Close
This is an introduction to Human Computer Interaction (HCI). It covers basic concepts, principles, and frameworks in HCI; models of interaction; and design guidelines and methodologies. The course includes extensive readings and reports, as well as work on projects involving interface design and development.
This is a course on more complex data structures, and algorithm design and analysis, using the C++ language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
Increasing use of computers and networks in business, government, recreation, and almost all aspects of daily life has led to a proliferation of online sensitive data that, if used improperly, can harm the data subjects. As a result, concern about the ownership, control, privacy, and accuracy of these data has become a top priority. This course focuses on both the technical challenges of handling sensitive data and the policy and legal issues facing data subjects, data owners, and data users. This course is suitable for advanced undergraduate computer science majors, graduate students in computer science, and students in technology management or other majors with some computer science background. Course readings draw on a variety of sources, including both technical materials and the popular press.
This course provides a broad introduction to cornerstones of security (authenticity, confidentiality, message integrity, and non-repudiation) and the mechanisms to achieve them as well as the underlying mathematical basics. Topics include: block and stream ciphers, public-key systems, key management, certificates, public-key infrastructure (PKI), digital signature, non-repudiation, and message authentication. Various security standards and protocols such as DES, AES, PGP, and Kerberos, are studied. Close
Enterprise Security and Information Assurance (3-0-0)
(Lecture-Lab-Study Hours)
This course addresses the security of e-business and cyber environments from an end-to-end perspective, including data center security and access security. The information security phases of inspection, protection, detection, reaction, and reflection are emphasized. Topics also include: server and application security, virtual local area networks (VLANs), secure access and financial transaction techniques, and backup and disaster recovery techniques. The course also reviews financial Electronic Data Interchange (EDI) and smart card security in banking applications, and describes how the business and financial risks associated with security are estimated and managed. The course includes a project and related lab experiments. Close
This course provides a basic introduction to the key concepts in security. It covers basic concepts such as authentication, confidentiality, integrity, and non-repudiation as well as important techniques and applications. Topics include access control, security economics, ethics, privacy, software/operating system security, and security policies.
The focus of this course is on the behavior of and interactions between individual participants in the economic system. In addition to providing a theoretical basis for the analysis of these economic questions, the course also develops applications of these theories to a number of current problems. Topics include: the nature of economic decisions, the theory of market processes, models of imperfect competition, public policy towards competition, the allocation of factors of production, discrimination, poverty and earnings, and energy.
Students in this course work in teams to develop real software for real clients. Topics in software engineering additional to or more advanced than those taught in CS 347 are introduced "just in time," as needed.
Introduction to Computer Science Honors II (4-0-0)
(Lecture-Lab-Study Hours)
Advanced programming concepts covering classical data structures and object-oriented programming. Emphasis will be on building a collection of re-usable software components that will form the basis of future programming efforts. The data structures covered include lists, stacks, queues, trees, binary search trees, and balanced search trees. The object-oriented features of Java covered include classes, templates, inheritance, polymorphism and run-time binding. Also included is a discussion of the analysis of asymptotic running times of algorithms. Close
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
Introduction to the design and querying of relational databases. Topics include: relational schemas; keys and foreign key references; relational algebra (as an introduction to SQL); SQL in depth; Entity-Relationship (ER) database design; translating from ER models to relational schemas and from relational schemas to ER models; functional dependencies; and normalization.
Fundamentals of CyberSecurity This course studies the mathematical models for computer security (Bell- LaPadula, Clark-Wilson, Biba, and Gligor models). It analyzes and compares, with respect to formal and pragmatic criteria, the properties of various models for hardware, software, and database security. Topics also include: formal specification and verification of security properties, operating system security, trust management, multi-level security, security labeling, security auditing and intrusion detection, security policy, safeguards and countermeasures, risk mitigation, covert channels, identification and authentication, password schemes, access control lists, and data fusion techniques. The course includes a project.
This is a course on more complex data structures, and algorithm design and analysis, using the C++ language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
Introduction to Computer Science Honors II (4-0-0)
(Lecture-Lab-Study Hours)
Advanced programming concepts covering classical data structures and object-oriented programming. Emphasis will be on building a collection of re-usable software components that will form the basis of future programming efforts. The data structures covered include lists, stacks, queues, trees, binary search trees, and balanced search trees. The object-oriented features of Java covered include classes, templates, inheritance, polymorphism and run-time binding. Also included is a discussion of the analysis of asymptotic running times of algorithms. Close
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.
This is a course on more complex data structures, and algorithm design and analysis, using the C++ language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
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.
This is a course on more complex data structures, and algorithm design and analysis, using the C++ language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
This is a course on more complex data structures, and algorithm design and analysis, using the C language. Topics include: advanced and/or balanced search trees; hashing; further asymptotic complexity analysis; standard algorithm design techniques; graph algorithms; complex sort algorithms; and other "classic" algorithms that serve as examples of design techniques. Close
Students in this course work in teams to develop real software for real clients. Topics in software engineering additional to or more advanced than those taught in CS 347 are introduced "just in time," as needed.
Humanities requirements: two Group A courses at the 100 level, two Group B courses at the 100 level, and four courses at the 300/400 level that must include HSS 371.