DEPARTMENT OF COMPUTER ENGINEERING
Professors: Ruth E. Davis (Robert W. Peters Professor), Nam Ling
Associate Professors: Darren Atkinson, Ronald L. Danielson, Silvia Figueira, JoAnne Holliday, Daniel W. Lewis, Qiang Li, Thomas Schwarz, S.J., Weijia Shang (Department Chair)
The Department of Computer Engineering offers major programs leading to the Bachelor of Science in Computer Engineering or Computer Science and Engineering or the Bachelor of Science in Web Design and Engineering. The computer science and engineering program features a balanced core in which each student studies the engineering aspects of software and hardware as well as the mathematical foundations of computation. Computer science and engineering electives permit students to build on this core with varying emphasis, depending on their interests. The Web design and engineering program combines a technical education in computing with courses in graphic art, communication, and sociology to enable its graduates to understand the engineering infrastructure of the Web, how the Web affects society, and how the ways in which society uses the Web create new demands on technology. Instruction and research in the department's programs are supported by the facilities of the Engineering Design Center and the University's Information Technology Center.
REQUIREMENTS FOR THE MAJORS
Bachelor of Science in Computer Engineering or in Computer Science and Engineering
In the following, the program, which is identical for both titles, is referred to as “computer science and engineering.” In addition to fulfilling the University Core Curriculum requirements for a Bachelor of Science degree in the engineering school, students majoring in computer science and engineering must complete a minimum of 190 units and the following departmental requirements:
English
ENGL 181, 182
Mathematics and Natural Sciences
- MATH 11, 12, 13, 14
- AMTH 106 (or MATH 22) or an advisor-approved mathematics or natural science elective
- AMTH 108 (or MATH 122)
- MATH 53 or CSCI 166 or AMTH 118
- CHEM 11 or an advisor-approved natural science elective
- PHYS 31, 32, 33
Engineering
- ENGR 1
- ELEN 50, 115, 153
- COEN 10 (or demonstrated equivalent programming proficiency)
- COEN 11, 12, 19, 20, 21, 70, 122, 146, 174, 175, 177, 179
- COEN 194 (or ENGR 194), COEN 195 (or ENGR 195), COEN 196 (or ENGR 196)
Computer Science and Engineering Electives
Three upper-division courses selected from COEN 100–180, ELEN 123 (or MECH 123), 133, and 134 in an emphasis area selected in consultation with an academic advisor. Six units of COEN 193 or 4 units of COEN 199 may be used as one elective.
Educational Enrichment Electives
An educational enrichment experience selected from one of the following options:
- Eight or more units in a study abroad program that does not duplicate other coursework
- Cooperative education experience with enrollment in COEN 188 and COEN 189
- Admission to one of the department’s master’s degree programs and completion of at least the first 12 units of that program prior to completion of the undergraduate degree
- Undergraduate research with completion of 6 or more units of COEN 193 (cannot also be used to satisfy a COEN elective)
- Twelve or more units selected in consultation with an academic advisor. The courses may not also be used to satisfy University Core Curriculum require- ments, but a minor or second major may be used to complete this option.
Concentrations
Students majoring in computer science and engineering may complete one of four concentrations with certification by the department and on the student’s transcript.
Concentration in Information Assurance
The Committee on National Security Systems and the National Security Agency have certified that Santa Clara University’s program in Information Assurance has been reviewed by the National Level Information Assurance Subject Matter Experts and has been determined to meet the National Training Standard for Information Systems Security Professionals, NSTISSI No. 4011. Computer science and engineering students completing the Concentration in Information Assurance select their course options as follows:
- Computer Science and Engineering Electives: AMTH 387, COEN 150 or 250, and one of COEN 350, COEN 252, COEN 253, or CSCI 182. Students wishing to use these courses to satisfy the computer science and engineering electives must receive approval from the department chair.
- Educational Enrichment: Either a six-month cooperative education experience in information assurance, preferably with a federal agency or 8 additional units selected from COEN 178, COEN 252, COEN 253, COEN 350, COEN 351, and CSCI 182.
- Senior Design Project: The project should involve security-related activities approved and mentored by designated faculty.
Concentration in Game Development
Computer science and engineering students completing the Concentration in Game Development use COEN 148, 165, and 166 to fulfill their computer science and engineering electives. In addition, either the senior design project or the cooperative education experience must be directly related to the concentration.
Concentration in Web Technologies
The Computer Science and Engineering Concentration in Web Technologies covers (a) the use of mark-up languages, programming and standards to create content; (b) the infrastructure consisting of servers, Web caches, and content distribution networks to deliver millions of pages to thousands of clients in fractions of a second; and (c) usability—the quality of a system that makes it easy to learn, easy to use, easy to remember, and error tolerant. Computer science and engineering students completing the concentration in Web Technologies use COEN 161, 162, and 163 to fulfill their computer science and engineering electives. In addition, either the senior design project or the cooperative education experience must be directly related to the concentration.
Concentration in Robotics
Computer science and engineering students completing the Concentration in Robotics use COEN 120, 165, and 166 to fulfill their computer science and engineering electives. In addition, either the senior design project or the cooperative education experience must be directly related to the concentration.
Bachelor of Science in Web Design and Engineering
In addition to fulfilling the University Core Curriculum requirements for a Bachelor of Science degree in the engineering school, students majoring in Web design and engineering must complete a minimum of 175 units and the following departmental requirements:
Arts, Humanities, and Social Sciences
- ENGL 138 or ENGL 181 and 182
- ARTS 174, 175, 177
- COMM 2, 12, 30
- SOCI 49
- An advisor-approved discipline-related course satisfying the University Core ethics requirement
Mathematics and Natural Sciences
- MATH 11, 12, 13, 14
- AMTH 108 (or MATH 122)
Engineering
- ENGR 1
- COEN 10 (or demonstrated equivalent programming proficiency), 11, 12 or CSCI 10, 60, 61
- COEN 146, 161, 162, 163
- COEN 194 (or ENGR 194), COEN 195 (or ENGR 195), COEN 196 (or ENGR 196)
Web Design and Engineering Electives
One of COEN 150, 164, 174, and 178
Educational Enrichment Electives
Same as for major in computer science and engineering
REQUIREMENTS FOR THE MINOR IN COMPUTER SCIENCE AND ENGINEERING
Students must fulfill the following requirements for a minor:
- COEN 11, COEN 44, CSCI 10, or OMIS 30
- COEN 12 or CSCI 61
- COEN 20, 21
- Four courses selected from COEN 70 and any upper-division computer engineering lecture courses (i.e., COEN 100–180)
- Work completed to satisfy these requirements must include at least two courses beyond any free electives or other courses required to earn the bachelor’s degree in the student’s primary major.
COMBINED BACHELOR OF SCIENCE AND MASTER OF SCIENCE PROGRAM
The Department of Computer Engineering offers a combined degree program leading to the Bachelor of Science and a Master of Science open to students pursuing an undergraduate degree at Santa Clara in Computer Science and Engineering, Web Design and Engineering, or Computer Science. Under the combined degree program, an undergraduate student begins taking courses required for a master’s degree before completing the requirements for the bachelor’s degree and typically completes the requirements for a Master of Science within a year of obtaining the bachelor’s degree.
Undergraduate students admitted to the program may begin taking graduate courses no earlier than the fall term of their senior year. Students in this program will receive their bachelor’s degree after satisfying the standard undergraduate degree requirements. To earn the master’s degree, students must fulfill all the requirements for the degree, including the completion of 45 units of coursework beyond that applied to their bachelor’s degree.
No course can be used to satisfy requirements for both the bachelor’s degree and the master’s degree. Completion of 12 or more units of courses in computer science and engineering taken for the master’s degree satisfies the Educational Enrichment requirement of the undergraduate program. Some courses required in the master’s degree programs may be replaced by free electives due to similar undergraduate coursework.
COMPUTER ENGINEERING LABORATORIES
The ASIC Testing Laboratory supports research conducted by graduate students from the departments of Electrical Engineering and Computer Engineering. Computer-aided testing packages from industry and the public domain are used in projects such as fault modeling and analysis. Design for Test on RTL-level for digital and mixed signal circuits. Design for reliability based on the defect-based testing.
The Digital Systems Laboratory (operated jointly with the Department of Electrical Engineering) provides complete facilities for experiments and projects ranging in complexity from a few digital integrated circuits to FPGA-based designs. The laboratory also includes a variety of development systems to support embedded systems and digital signal processing.
The eHealth Lab is devoted to solving problems in the biomedical informatics area, more precisely problems related to the manipulation of medical data: format conversion, storage, and communication. The lab contains a 4-node Linux cluster, one Windows and two Solaris machines, three Mini-ITX EPIA-MII Linux boxes, and two Nortel Accelar routers. Some of the current projects are: HealthLog in a Flash, client/server infrastructure for a clinical trial system, and search mechanisms for medical files.
The Multimedia Compression Laboratory supports research in video coding (compression and decompression).
The Wireless Networks Lab is shared by Computer Engineering and Electrical Engineering. The lab carries out research projects on the lower three layers of wireless networks. Current projects include: 1) Efficient scheduling of user traffic in cellular networks using smart antennas, 2) Algorithms for turn-key base stations in cellular networks, and 3) Changes to the MAC protocol in 802.11 based ad-hoc networks.
The Software Engineering Research Laboratory is a dedicated facility not only for the support of various research activities aimed at developing engineering techniques and tools that help produce and validate high-quality software, but also for developing applications using leading-edge technologies. Specific research activities include the navigation and visualization of large data repositories, profile-driven inlining of code, and program refactoring.
The Reliable Storage Laboratory pursues research in reliability of disk drives (with about 35 machines with six disk drives each) belonging to the Internet Archive in San Francisco and high availability scalable distributed data structures with six PCs. It is also used as the Computer Forensics teaching laboratory, housing a cart with 16 laptops and a forensics workstation.
LOWER-DIVISION COURSES
10. Introduction to Programming
Overview of computing. Introduction to program design and implementation: problem definition, functional decomposition, and design of algorithms using media computation. Media computation involves manipulating digital media (pictures and sound) to learn the basic concepts in computation. Programming in the C language: data types, variables, functions, parameters, control constructs, input and output. Program development: editing, compiling, linking, testing, and debugging. Credit is not allowed for more than one introductory class such as COEN 10, COEN 44, CSCI 10, or OMIS 30. (5 units)
11. Advanced Programming
The C Language: structure and style. Types, operators, and expressions. Control flow. Functions. Pointers, arrays, and strings. Structures and dynamic memory allocation. I/O and file processing. Special operators. Recursion and threads. The Unix environment. Prerequisites: Previous programming experience and/or an introductory programming course, such as COEN 10 with a grade of C- or better, CSCI 10, or OMIS 30. (5 units)
12. Abstract Data Types and Data Structures
Data abstraction: abstract data types, information hiding, interface specification. Basic data structures: stacks, queues, lists, binary trees, hashing, tables, graphs; implementation of abstract data types in the C language. Internal sorting: review of selection, insertion, and exchange sorts; quicksort, heapsort; recursion. Analysis of run-time behavior of algorithms; Big-O notation. Introduction to classes in C++. Prerequisite: COEN 11 with a grade of C- or better or COEN 44. Recommended co-requisite: COEN 19 or MATH 51. Credit not allowed for more than one introductory data structures class, such as COEN 12 or CSCI 61. (5 units)
19. Discrete Mathematics
Relations and operations on sets, orderings, elementary combinatorial analysis, recursion, algebraic structures, logic, and methods of proof. Also listed as MATH 51. (4 units)
20. Introduction to Embedded Systems
Introduction to computer organization: CPU, registers, buses, memory, I/O interfaces. Number systems: arithmetic and information representation. Assembly language programming: addressing techniques, arithmetic and logic operations, branching and looping, stack operations, procedure calls, parameter passing, and interrupts. C language programming: pointers, memory management, stack frames, interrupt processing. Multi-threaded programming; pre-emptive and nonpre-emptive kernels; shared resources; scheduling. Prerequisite: COEN 12 with a grade of C- or better or CSCI 61. Co-requisite: COEN 20L. (4 units)
20L. Embedded Systems Lab
Laboratory for COEN 20. Co-requisite: COEN 20. (1 unit)
21. Introduction to Logic Design
Boolean functions and their minimization. Designing combinational circuits, adders, multipliers, multiplexers, decoders. Noise margin, propagation delay. Bussing. Memory elements: latches and flip-flops; timing; registers; counters. Programmable logic, PLD, and FPGA. Use of industry quality CAD tools for schematic capture and HDL in con-junction with FPGAs. Also listed as ELEN 21. Co-requisite: COEN 21L. (4 units)
21L. Logic Design Lab
Laboratory for COEN 21. Also listed as ELEN 21L. Co-requisite: COEN 21. (1 unit)
44. Applied Programming
Introduction to computer operating systems. Elements of computer programming in C, including input/output, branching and loops, iterative solutions, function definition and invocation, macros, memory allocation, and top-down design. Programming of elementary mathematical operations. Applications to engineering problems. Co-requisite: MATH 21. (5 units)
45. Applied Programming in MATLAB
Introduction to computer operating systems. Elements of computer programming in MATLAB, including input/output, branching and loops, iterative solutions, function definition and invocation, top-down design. Programming of elementary mathematical operations. Applications to engineering problems. Co-requisite: MATH 21. (5 units)
70. Formal Specification and Advanced Data Structures
Specification, representation, implementation, and validation of data structures; object-oriented design and programming in a strongly typed functional language (Haskell or ML) with emphasis on reliable reusable software; formal specification of data structures (graphs, sets, bags, tables, environments, trees, expressions, graphics); informal use of specifications to guide implementation and validation of programs; guidelines and practice in designing for and with reuse. Prerequisites: COEN 19 or MATH 51; COEN 12 with a grade of C- or better or CSCI 61. (5 units)
UPPER-DIVISION COURSES
120. Real Time Systems
Overview of real-time systems: classification, design issues and description. Finite state machines and statecharts. Robot programming: odometry and the use of sensors. Real-time programming languages, real-time kernels and multi-threaded programming. Unified Modeling Language for the design of real-time applications. Performance analysis. Prerequisite: COEN 20 with a grade of C- or better. Co-requisite: COEN 120L. (4 units)
120L. Real Time Systems Laboratory
Laboratory for COEN 120. Co-requisite: COEN 120. (1 unit)
122. Computer Architecture
Overview of computer systems. Instruction set architecture. Computer arithmetic. CPU datapath design. CPU control design. Microprogramming techniques. Pipelining. Memory hierarchies and management. Overview of input/output sub-system. Hardware description languages. Laboratory project consists of a design of a CPU. Prerequisites: COEN 20 or ELEN 33 and COEN 21 or ELEN 21, with a grade of C- or better. (5 units)
127. Advanced Logic Design
Contemporary design of finite-state machines as system controllers using MSI, PLDS, or FPGA devices. Minimization techniques, performance analysis, and modular system design. HDL simulation and synthesis. Also listed as ELEN 127. Prerequisite: COEN 21; co-requisites: COEN 127L and ELEN 115. (4 units)
127L. Advanced Logic Design Lab
Laboratory for COEN 127. Design, construction, and testing of controllers from verbal specs. Use of CAD design tools. Also listed as ELEN 127L. Co-requisite: COEN 127. (1 unit)
129. Current Topics in Computer Science and Engineering
Subjects of current interest. May be taken more than once if topics differ. (4 units)
145. Introduction to Parallel and Concurrent Programming
Concept of concurrency, thread programming, thread/process synchronization, synchronization algorithms and language constructs, shared-memory vs. message-passing. Parallel programming concept, performance metrics, overview of multiprocessor architectures (block level), evaluation of parallel algorithms, data parallel programming, shared-memory and message-passing parallel programming. Case studies on application algorithms. Prerequisite: COEN 177; co-requisite: COEN 179 or CSCI 163. Knowledge of C recommended. (5 units)
146. Computer Networks
Data Communication: circuit and packet switching, latency and bandwidth, throughput/delay analysis. Application Layer: client/server model, socket programming, Web, e-mail, FTP. Transport Layer: TCP and UDP, flow control, congestion control, sliding window techniques. Network Layer: IP and routing. Data Link Layer: shared channels, media access control protocols, error detection and correction. Mobile computing and wireless networks. Network security. Laboratory consists of projects on software development of network protocols and applications. Prerequisite: COEN 20 with a grade of C- or better. Recommended co-requisite: AMTH 108. (5 units)
148. Computer Graphics Systems
Interactive graphic systems. Graphics primitives, line and shape generation. Simple transforming and modeling. Efficiency analysis and modular design. Interactive input techniques. 3D transformations and viewing, hidden surface removal. Color graphics, animation, real-time display considerations. Parametric surface definition and introduction to shaded-surface algorithms. Offered in alternate years. Prerequisites: MATH 53; COEN 12 or CSCI 61. (5 units)
150. Introduction to Information Security
Overview of information assurance. Legal and ethical issues surrounding security and privacy. Malware and secure coding techniques. Authentication and authorization. Other related topics. Prerequisite: COEN 20 or OMIS 107. (4 units)
152. Introduction to Computer Forensics
Procedures for identification, preservation, and extraction of electronic evidence. Auditing and investigation of network and host system intrusions, analysis and documentation of information gathered, and preparation of expert testimonial evidence. Forensic tools and resources for system administrators and information system security officers. Ethics, law, policy, and standards concerning digital evidence. (5 units)
161. Web Programming I
Fundamentals of the World Wide Web and its architecture. Designing applications with separation of content and presentation with XHTML and CSS. Introduction to the Document Object Model (DOM). Dynamic documents with Javascript and Ajax (Asynchronous Javascript and XML). Basics of scripting languages (PHP and Perl). Introduction to server-side programming using PHP and Perl. XML technologies (XML Schema, XSLT). Database access through Web. Programming with distributed components and Web services. A comparative study of CGI programming, Java Server Pages and ASP.net. Note: This is a two-part sequence and some of the topics will be covered in COEN 164. Prerequisite: COEN 12 or CSCI 61. (5 units)
162. Web Infrastructure
History and overview of World Wide Web technology. Web clients and browsers. State management, session persistence, and cookies. Spiders, bots, and search engines. Web proxies. Web servers and server farms. HTTP and Web protocols. Web caching and content distribution. Load balancing. Web security and firewalls. Web workload and traffic characterization. Prerequisite: COEN 146. (4 units)
163. Web Usability
Principles of user-centered design. Principles of human computer interaction. Fundamental theories in cognition and human factors: information processing, perception and representation, constructivist and ecological theories, Gestalt laws of perceptual organization. Usability engineering: user research, user profiling, method for evaluating user interface, usability testing. Prototyping in user interface: process, methods of evaluating and testing. Inclusive design in user interface design: accessibility issues, compliance with section 508 of Rehabilitation Act. Prerequisite: COEN 12 with a grade of C- or better or CSCI 61. (5 units)
164. Web Programming II
Continuation of COEN 161, Web Programming I. Prerequisite: COEN 161. (5 units)
165. Modeling and Control of Rigid Body Dynamics
Mathematical and physical principles of motion of rigid bodies, including movement, acceleration, inertia and collision. Modeling of rigid body dynamics for three-dimensional graphic simulation; controlling the motion of rigid bodies in robotic applications. Also listed as ARTS 173. Prerequisites: MATH 21; COEN 012 or CSCI 61. (4 units)
166. Artificial Intelligence
Philosophical foundations of Artificial Intelligence, problem solving, knowledge and reasoning, neural networks and other learning methods. Prerequisite: COEN 019 or MATH 52. (4 units)
171. Principles of Design and Implementation of Programming Languages
High-level programming language concepts and constructs. Costs of use and implementation of the constructs. Issues and trade-offs in the design and implementation of programming languages. Critical look at several modern high-level programming languages. Offered in alternate years. Prerequisites: COEN 20; COEN 70 or CSCI 61. (4 units)
172. Structure and Interpretation of Computer Programs
Techniques used to control complexity in the design of large software systems: design of procedural and data abstractions; design of interfaces that enable composition of well-understood program pieces; invention of new, problem-specific languages for describing a design. Prerequisites: COEN 19 or MATH 51; COEN 70 or CSCI 61; or permission of the instructor. (5 units)
173. Logic Programming
Application of logic to problem solving and programming; logic as a language for specifications, programs, databases, and queries; separation of logic and control aspects of programs; bottom-up reasoning (forward from assumptions to conclusions) versus top-down reasoning (backward from goals to subgoals) applied to problem solving and programming; nondeterminism, concurrency, and invertibility in logic programs. Programs written and run in Prolog. Prerequisites: COEN 70 or CSCI 61 and COEN 19 or MATH 51. (5 units)
174. Software Engineering
Software development life cycle. Project teams, documentation, and group dynamics. Software cost estimation. Requirements engineering and design. Data modeling, object modeling, and object-oriented analysis. Object-oriented programming and design. Software testing and quality assurance. Software maintenance. Prerequisites: COEN 12 with a grade of C- or better, or CSCI 61, or permission of instructor and previous use of UNIX workstations. (5 units)
175. Introduction to Formal Language Theory and Compiler Construction
Introduction to formal language concepts: regular expressions and context-free grammars. Compiler organization and construction. Lexical analysis and implementation of scanners. Top-down and bottom-up parsing and implementation of top-down parsers. An overview of symbol table arrangement, run-time memory allocation, intermediate forms, optimization, and code generation. Prerequisite: COEN 70 with a grade of C- or better, or CSCI 61. (5 units)
177. Operating Systems
Introduction to organization of operating systems. Operating system concepts, computer organization model, storage hierarchy, operating system organization, processes management, interprocess communication and synchronization, memory management and virtual memory, I/O subsystems, and file systems. Design, implementation, and performance issues. Prerequisites: COEN 20 with a grade of C- or better, and either MATH 61 or COEN 12 with a grade of C- or better. (5 units)
178. Introduction to Database Systems
ER diagrams and the relational data model. Database design techniques based on integrity constraints and normalization. Database security and index structures. SQL and DDL. Transaction processing basics. Prerequisites: COEN 20; COEN 12 or CSCI 61. (5 units)
179. Theory of Algorithms
Introduction to techniques of design and analysis of algorithms: asymptotic notations and running times of recursive algorithms; design strategies: brute-force, divide and conquer, decrease and conquer, transform and conquer, dynamic programming, greedy technique. Intractability: P and NP, approximation algorithms. Also listed as CSCI 163. Prerequisites: MATH 51 or 52, or equivalent, and COEN 12 with a grade of C- or better or CSCI 61 or equivalent. Nonnumerical. (4 units)
180. Introduction to Information Storage
Storage hierarchy. Caching. Design of memory and storage devices, with particular emphasis on magnetic disks. Error correction fundamentals. Disk arrays. Storage interfaces and buses. Network attached storage and storage area networks, interaction of economy and technological innovation. Also listed as ELEN 180. Prerequisites: COEN 20 and 21; COEN 122 recommended. (4 units)
188. Co-op Education
Practical experience in a planned program designed to give students work experience related to their academic field of study and career objectives. Satisfactory completion of the assignment includes preparation of a summary report on co-op activities. P/NP grading. May not be taken for graduate credit. (2 units)
189. Co-op Technical Report
Credit given for a technical report on a specific activity such as a design or research project, etc., after completing the co-op assignment. Approval of department advisor required. Letter grades based on content and quality of report. May be taken twice. May not be taken for graduate credit. (2 units)
193. Undergraduate Research
Involves working on a year-long research project with one of the faculty members. Students should register three times in a row for a total of 6 units. Does not substitute for the senior project, which may be a continuation of the research done. Registration requires the faculty member’s approval. Students must have junior or senior standing and a minimum GPA of 3.0. (2 units)
194. Design Project I
Specification of an engineering project, selected with the mutual agreement of the student and the project advisor. Complete initial design with sufficient detail to estimate the effectiveness of the project. Initial draft of the project report. (2 units)
195. Design Project II
Continued design and construction of the project, system, or device. Initial draft of project report. Prerequisite: COEN 194. (2 units)
196. Design Project III
Continued design and construction of the project, system, or device. Formal public presentation of results. Final report. Prerequisite: COEN 195. (2 units)
199. Directed Research/Reading
Special problems. By arrangement. (1–5 units)