Chapter 10: Department of Computer Science and Engineering

Professor Emeritus: Ronald L. Danielson, Daniel W. Lewis
Wilmot J. Nicholson Family Professor: Nam Ling
Regis and
Dianne McKenna Professor: Silvia Figueira (Department Chair)
Professor: Ruth E. Davis
Associate Professors: Margareta Ackerman, Ahmed Amer, Darren Atkinson, Behnam Dezfouli, Yi Fang, Xiang Li, Ying Liu, Yuhong Liu, Weijia Shang
Assistant Professors: David C. Anastasiu, Younghyun Cho, Sean Choi, I-Han Hsiao, Oana Ignat, Shiva Jahangiri, Krishna Kattiyan, Xiao Li, Kai Lukoff, Yidi Wang
Lecturers: Salem Al-Agtash, Yan Cui, Farokh H. Eskafi, Keyvan Moataghed, Angela Musurlian, Michael Schimpf, Navid Shaghaghi, Yuan Wang

Overview

The most successful graduates in the field of computing are those who understand computers as systems—not just the design of hardware or software, but also the relationships and interdependencies between them and the underlying theory of computation.

The Computer Science and Engineering degree includes courses that cover the breadth of the discipline, from the engineering aspects of hardware and software design to the underlying theory of computation.

Degree Programs

Students are required to meet with their advisors to define and file a program of study during their first quarter. In general, no credit is allowed for courses that duplicate prior coursework, including courses listed as degree requirements. Students should arrange adjustment of these requirements with their academic advisor when they file their program of study. With the prior written consent of the advisor, master’s students may take a maximum of 12 units of coursework for graduate credit from selected senior-level undergraduate courses.

Master of Science in Computer Science and Engineering (MSCSE)

All students admitted to the M.S. in CSE program are expected to have competence in the fundamental subjects listed below, as required from an accredited program for a B.S. in Computer Science, Computer Engineering, and Computer Science and Engineering. An applicant without such background must complete foundation courses below 1 through 3 prior to being admitted into the program. These courses must be taken at an approved accredited institution. Courses 1 through 3 are not eligible for transfer credit.  Math courses (4 through 6) may be taken as a graduate-level course in Applied Math in the graduate program at SCU as part of the MS degree within the first year of your admissions.

  1. Logic design 
  2. Data structures 
  3. Computer organization & assembly language 
  4. Discrete Math
  5. Probability
  6. One of the following: Differential Equations, Numerical Analysis, or Linear Algebra
  7. One additional advanced programming course or one year of programming experience in the industry.

Degree Requirements

Engineering Graduate Core

Students must take a minimum 4 units from the Graduate Core, one course from each of the following areas:

  • Professional Development
  • Engineering and Society

Please refer to Chapter 6  for additional information and the core course list.

MSCSE Core

  • CSEN 210, 279, and 283
    Students who have taken one or more of these core courses or their equivalent must replace said course(s) with the advanced course equivalent (CSEN 313, 379, and/or 383) or, with their advisor’s approval, replace said course(s) with elective(s).

MSCSE Electives

  • CSE electives must be approved by the advisor.
  • Students must take a minimum of 8 units of CSEN 300-899 courses and may take at most 6 units of CSEN 493/494/499.
  • Students must take sufficient elective units to bring the total to at least 46, and at least 36 of these units must come from CSEN courses.

Please Note: Students wishing to do a thesis (CSEN 497) should consult with their academic advisor regarding a modification of these requirements.

Master of Science in Software Engineering (MSSE)

We are currently not accepting applications for the Master of Science in Software Engineering program.

Doctor of Philosophy in Computer Science and Engineering

The Doctor of Philosophy (Ph.D.) degree is conferred by the School of Engineering primarily in recognition of competence in the subject field and the ability to investigate engineering problems independently, resulting in a new contribution to knowledge in the field. The work for the degree consists of engineering research, the preparation of a thesis based on that research, and a program of advanced study in engineering, mathematics, and related physical sciences. The student’s work is directed by the department, subject to the general supervision of the School of Engineering. See Chapter 2 for details on admission and general degree requirements. The following departmental information augments the general requirements.

Preliminary Exam

A preliminary written exam is offered at least once per year by the department as needed. The purpose is to ascertain the depth and breadth of the student’s preparation and suitability for Ph.D. work. Only those students who pass the preliminary examination shall be allowed to continue in the doctoral program. The preliminary examination may be repeated only once, and then only at the discretion of the thesis advisor.

The exam consists of three core subjects in the computer science and engineering area: computer architecture, algorithms, and operating systems. Students who do not pass all subjects during the first attempt are required to take the exam(s) of the failed subject(s) in the second attempt.

Doctoral Advisor

The student and their advisor jointly develop a complete program of study for research in a particular area. The complete program of study (and any subsequent changes) must be filed with the Engineering Graduate Office and approved by the student’s doctoral committee. Until this approval is obtained, there is no guarantee that the courses taken will be acceptable toward the Ph.D. course requirements.

Doctoral Committee and Other Requirements

After passing the Ph.D. preliminary exam, a student requests their doctoral advisor to form a doctoral committee. The committee consists of at least five members, each of which must have earned a doctoral degree in a field of engineering or a related discipline. This includes the student’s doctoral advisor, at least two other current faculty members of the student’s major department at Santa Clara University, and at least one current faculty member from another appropriate academic department at Santa Clara University.

The committee reviews the student’s program of study, conducts an oral comprehensive exam (presentation of research proposal for examinations on the subject of research work), conducts the dissertation defense, and reviews the thesis. Successful completion of the doctoral program requires that the student’s program of study, performance on the oral comprehensive examination, dissertation defense, and dissertation itself meet with the approval of all committee members. In addition, acceptance of publications (at least one article accepted by a refereed journal with an impact factor of at least 1.0) with the student as the primary (first) author is required.

Academic Requirements

The student is expected to complete a minimum of 72 units of graduate credit beyond the master’s degree with an overall GPA of 3.000 or better.  Of these, 36 quarter units may be earned through coursework, independent study, and directed research, and 36 through the thesis. A maximum of 18 quarter units (12 semester units), not previously used for the completion of another degree, may be transferred from any accredited institution at the discretion of the student’s advisor.

Time Limit for Completing Degree

All requirements for the doctoral degree must be completed within eight years following initial enrollment in the Ph.D. program. Extensions will be allowed only in unusual circumstances and must be recommended in writing by the student’s doctoral committee. Extensions will be allowed only if approved by the Associate Dean of Graduate Studies in consultation with the Graduate Program Leadership Council (GPLC).

Engineer’s Degree in Computer Science and Engineering

The program leading to the engineer’s degree is particularly designed for the education of the practicing engineer. The degree is granted on completion of an approved academic program and a record of acceptable technical achievement in the candidate’s field of engineering. The academic program consists of a minimum of 46 units beyond the master’s degree. Courses are selected to advance competence in specific areas relating to the engineering professional’s work. Evidence of technical achievement must include a paper principally written by the candidate and accepted for publication by a recognized engineering journal prior to the granting of the degree. A letter from the journal accepting the paper must be submitted to the department chairperson. In certain cases, the department may accept publication in the proceedings of an appropriate conference.

Admission to the program will generally be granted to those students who demonstrate superior ability in meeting the requirements for their master’s degree. Normally, the master’s degree is earned in the same field as that in which the engineer’s degree is sought. Students who have earned a master’s degree from Santa Clara University must file a new application (by the deadline) to continue work toward the engineer’s degree. A program of study for the engineer’s degree should be developed with the assistance of an advisor and submitted during the first term of enrollment.

Laboratories

The Artificial Intelligence (AI) Laboratory conducts research across diverse facets of AI, including foundational and applied machine learning, and computational creativity, exploring the capabilities of AI systems to be autonomously creative as well as act as co-creative partners. 

The Cloud Laboratory focuses on research in designing, developing, and testing the next-generation cloud-based systems and applications: (1) develop and utilize domain-specific hardware for cloud applications, and (2) optimizing existing systems to better serve new and coming applications that rely on the cloud, such as self-driving car, AI/ML/DL/LLM and serverless compute.

The Data Science Laboratory is devoted to the extraction of knowledge from data and to the theory, design, and implementation of information systems to manage, retrieve, mine, and utilize data.

The Databases and Information Systems Laboratory (DBIS Lab) focuses on research in designing, developing, and optimizing data management and information systems. Projects cover areas like database internals (query processing, execution engine, data storage), database architecture (including disaggregated architectures), as well as research in Knowledge Graphs and Semantic Web.

The Global Digital Transformation (GDT) Clinic focuses on helping social enterprises, non-profit organizations, and governmental programs that operate in low-resource areas embrace technology. This is done by designing, developing, and deploying customized web/mobile applications that can help them improve and/or scale their operation to better serve their beneficiaries.

The Human-Computer Interaction Laboratory (HCI Lab) researches, designs, and develops technologies with social impact, with a focus on AR/VR, social computing, generative AI, and digital wellbeing.

The Internet of Things (IoT) Research Laboratory (SIOTLAB) focuses on designing and developing intelligent sensing solutions, efficient and secure communication platforms and protocols, and seamless edge-to-cloud computing infrastructures that harness artificial intelligence to enhance systems' performance, decision-making, and operational efficiency.

The Machine Learning and Computational Genomics Laboratory focuses on algorithmic design for machine learning problems with real-world applications and impact, especially those with unconventional inputs, such as sparse data, sets of multivariate time series, video streams, and genomics and proteomics data.

The Multimedia Visual Processing Laboratory (MVP Lab) supports research in image and video coding (compression and decompression) and processing with visual processing and deep learning methods.

The Network Security and Optimization Laboratory focuses on using advanced algorithms and data-driven optimization techniques to solve security-related problems in various real-world complex networks. 

The Responsible AI Laboratory aims to foster interdisciplinary research, promote ethical AI education, and cultivate partnerships that ensure AI advances are safe, equitable, transparent, and beneficial to the broader good of society. 

The Sustainable Systems Laboratory (SSL) is dedicated to a computing-informed perspective on sustainability, and the complementary beliefs that just computing is sustainable, and sustainable computing is more than just computing. Via an initial focus on data storage technologies, it tackles both resilience and efficiency challenges to computing-related problems, and the application of systems-software concepts to broader societal and ethical questions.

The Systems & Performance Research Lab conducts research on system software (e.g., runtime systems and compilers) and performance tools (e.g., automatic tuning, profiling, and analysis) to improve the performance of software on parallel and high-performance computer systems. 

The Trustworthy Computing Laboratory focuses on the security, privacy, and trust challenges and solutions for emerging distributed systems and networks, such as online social media, Internet-of-Things, Blockchain, and Distributed Energy Resource (DER)-based Equitable and Self-sustaining Clean Energy Ecosystem.

The Video and Image Processing Laboratory (VIP Lab) investigates state-of-the-art deep learning and signal processing techniques for image and video processing, visual data compression, visual coding for machine intelligence, and 3D point cloud coding.

For details of faculty research areas, please see
https://www.scu.edu/engineering/academic-programs/department-of-computer-engineering/research/

Course Descriptions

Please Note: Depending on enrollment, some courses may not be offered every year.

The list of undergraduate courses can be found in the Undergraduate Bulletin. https://www.scu.edu/bulletin/undergraduate-bulletin/

Graduate Courses

Some graduate courses may not apply toward certain degree programs. During the first quarter of study, students should determine with their faculty advisors the program of study they wish to pursue.

CSEN 200. Logic Analysis and Synthesis

Analysis and synthesis of combinational and sequential digital circuits with attention to static, dynamic, and essential hazards. Algorithmic techniques for logic minimization, state reductions, and state assignments. Decomposition of state machine, algorithmic state machine. Design for test concepts. Also listed as ECEN 500. Prerequisite: CSEN 127C or equivalent. (2 units)

CSEN 201. Digital Signal Processing I

Description of discrete signals and systems. Z-transform. Convolution and transfer functions. System response and stability. Fourier transform and discrete Fourier transform. Sampling theorem. Digital filtering. Also listed as ECEN 233. Prerequisite: ECEN 210 or its undergraduate equivalent of ECEN 110. (2 units)

CSEN 201E. Digital Signal Processing I & II

Same description as CSEN 201 and CSEN 202. Credit is not allowed for both CSEN 201/202 and 201E. Also listed as ECEN 233E. (4 units)

CSEN 202. Digital Signal Processing II

Continuation of CSEN 201. Digital FIR and IIR filter design and realization techniques. Multi-rate signal processing. Fast Fourier transform. Quantization effects. Also listed as ECEN 234. Prerequisite: CSEN 201. (2 units)

CSEN 203. VLSI Design I

Introduction to VLSI design and methodology. Analysis of CMOS integrated circuits. Circuit modeling and performance evaluation supported by simulation (SPICE). Ratioed, switch, and dynamic logic families. Design of sequential elements. Fully custom layout using CAD tools. Also listed as ECEN 387. Prerequisite: CSEN or  ECEN 127 or equivalent. (2 units)

CSEN 204. VLSI Design II

Continuation of VLSI design and methodology. Design of arithmetic circuits and memory. Comparison of semi-custom versus fully custom design. General concept of floor planning, placement, and routing. Introduction of signal integrity through the interconnect wires. Also listed as ECEN 388. Prerequisite: CSEN or ECEN 387 or equivalent, or ECEN 153. (2 units)

CSEN 207. SoC (System-on-Chip) Verification

This course presents various state-of-the-art verification techniques used to ensure the corrections of the SoC (System-on-Chip) design before committing it to manufacturing. Both Logical and Physical verification techniques will be covered including Functional Verification, Static Timing, Power, and Lay Out Verification. Also, the use of Emulation Assertion-based Verification and Hardware/Software CO-Verification techniques will be presented. Also listed as CSEN 207. Prerequisites: ECEN 500 or CSEN 200 and ECEN 303 or equivalent. (2 units)

CSEN 210. Computer Architecture

Historical perspective. Performance analysis. Instruction set architecture. Computer arithmetic. Datapath. Control unit. Pipelining. Data and control hazards. Memory hierarchy. Cache. Virtual memory. Parallelism and multiprocessor. Prerequisites: CSEN 920C and CSEN 921C or equivalent. (4 units)

CSEN 218. Input-Output Structures

I/O architecture overview. I/O programming: dedicated versus memory-mapped I/O addresses. CPU role in managing I/O: Programmed I/O versus Interrupt-Based I/O versus DMA–based I/O. I/O support hardware: interrupt controllers (priority settings, and arbitration techniques), DMA controllers, and chip sets. I/O interfaces: point-to-point interconnects, busses, and switches. Serial versus parallel interfaces. Synchronous versus asynchronous data transfers. System architecture considerations: cache coherency issues, I/O traffic bandwidth versus latency (requirements and tradeoffs). Error detection and correction techniques. Examples: a high bandwidth I/O device, a parallel I/O protocol, and a serial I/O protocol. Prerequisite: CSEN 210. (2 units)

CSEN 225. Secure Coding in C and C++

Writing secure code in C, and C++. Vulnerabilities based on strings, pointers, dynamic memory management, integer arithmetic, formatted output, and file I/O. Attack modes such as (stack and heap-based) buffer overflow and format string exploits. Recommended practices. Prerequisites: CSEN 210 and experience with coding in C or C++. (2 units)

CSEN 233. Computer Networks

Fundamentals of computer networks: protocols, algorithms, and performance. 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 and wireless networks. Multimedia Networking. Network security. Prerequisites: CSEN 20 or equivalent and AMTH 108 or equivalent. (4 units)

CSEN 234. Network Management

Covers the fundamentals of network management. Management functions and reference models, management building blocks (information, communication patterns, protocols, and management organization), and management in practice (integration issues, service-level management). Prerequisite: CSEN 233 or equivalent. (2 units)

CSEN 235. Client/Server Programming

Client/server paradigm in the context of the Web and the Internet. Objects, components, frameworks, and architectures. Current platforms, such as J2EE, CORBA, and .NET. Prerequisites: Knowledge of Java programming and HTML. (4 units)

CSEN 238. Multimedia Information Systems

Overview and applications of multimedia systems. A brief overview of digital media compression and processing. Operating system support for continuous media applications. System services, devices, and user interface. Multimedia file systems and information models. Presentation and authoring. Multimedia over network. Multimedia communications systems and digital rights management. Knowledge-based multimedia systems. MPEG-7. MPEG-21. Prerequisites: AMTH 377 or CSEN 177, 279 or 283. (2 units)

CSEN 239. Network Design Analysis

Focus on current modeling and analysis of computer networks. Graph theory for networks, queuing theory, simulation methodology, principles and tools for network design, protocol definition, implementation, validation, and evaluation. Prerequisite: CSEN 233 or equivalent. (4 units)

CSEN 240. Machine Learning

Covers theoretical foundations of machine learning. Learning theory or concept learning, overfitting/regularization, decision tree learning, cluster algorithms, artificial neural networks, gradient descent. Students will implement select machine learning algorithms. Prerequisite: AMTH 108 or AMTH 210, MATH 53 or AMTH 246, CSEN 179 or 279. (4 units)

CSEN 241. Cloud Computing

Introduction to cloud computing, cloud architecture, and service models, the economics of cloud computing, cluster/grid computing, virtualization, big data, distributed file system, MapReduce paradigm, NoSQL, Hadoop, horizontal/vertical scaling, thin client, disaster recovery, free cloud services, and open-source software, example commercial cloud services, and federation/presence/identity/privacy in cloud computing. Prerequisites: CSEN 12 and CSEN 146 or 233. (4 units)

CSEN 242. Big Data

Introduction to Big Data. NoSQL data modeling. Large-scale data processing platforms. HDFS, MapReduce, and Hadoop. Scalable algorithms used to extract knowledge from Big data. Advanced scalable data analytics platforms. Prerequisites: AMTH 108 or AMTH 210 and CSEN 178 or 280. (4 units)

CSEN 243. Internet of Things

Application domains. Architecture. Edge and fog computing. Embedded processors. Interfacing digital sensors and actuators. Interrupts and exceptions in a concurrent world. Operating systems. Multitasking. Memory allocation. Low-power wireless communication. Real-time and reliable communication. IP networking. Protocol compression and translation. Multi-hop networking. Application layer protocols. Securing resource-constrained devices. Prerequisites: CSEN 12 or 912C and CSEN 146 or 233. Co-requisite: CSEN 243L. (4 units)

CSEN 243L. Laboratory for CSEN 243

Co-requisite: CSEN 243. (1 unit)

CSEN 250. Information Security Management

Techniques and technologies of information and data security. Managerial aspects of computer security and risk management. Security services. Legal and ethical issues. Security processes, best practices, accreditation, and procurement. Security policy and plan development and enforcement. Contingency, continuity, and disaster recovery planning. Preparation for design and administration of a complete, consistent, correct, and adequate security program. (2 units)

CSEN 251. Network Security

Protocols and standards for network security. Network-based attacks. Authentication, integrity, privacy, non-repudiation. Protocols: Kerberos, Public Key Infrastructure, IPSec, SSH, PGP, secure email standards, etc. Wireless security. Programming required. Prerequisite: CSEN 233, CSEN 250 or instructor approval. (4 units)

CSEN 252. 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. Prerequisite: CSEN 20 or 920C or equivalent. Co-requisite: CSEN 252L. (4 units)

CSEN 252L. Laboratory for CSEN 252

Co-requisite: CSEN 252. (1 unit)

CSEN 253. Secure Systems Development and Evaluation

Software engineering for secure systems. Security models and implementations. Formal methods for specifying and analyzing security policies and system requirements. Development of secure systems, including design, implementation, and other life-cycle activities. Verification of security properties. Resource access control, information flow control, and techniques for analyzing simple protocols. Evaluation criteria, including the Orange and Red books and the Common Criteria, technical security evaluation steps, management, and the certification process. Hands-on materials in methods for high-assurance using systems such as PVS from SRI, and the NRL Protocol Analyzer. Prerequisite: CSEN 250. (4 units)

CSEN 259. Advanced Compilers Design

Principles and practice of the design and implementation of a compiler, focusing on the application of theory and trade-offs in design. Lexical and syntactic analysis. Semantic analysis, symbol tables, and type checking. Run-time organization. Code generation. Optimization and data-flow analysis. Prerequisite: CSEN 256, 283 or 210. (4 units)

CSEN 266. Artificial Intelligence

Fundamental concepts of intelligent agents and agent design, search algorithms, adversarial search, constraint satisfaction problems, decision trees, Bayesian networks, Markov decision processes, and reinforcement learning. Students will implement algorithms to solve real-world problems. Prerequisites: CSEN 12 or 912C or equivalent, AMTH 210 and 245 or equivalent. (4 units)

CSEN 268. Mobile Application Development

Design and implementation of applications running on a mobile platform such as smartphones and tablets. Programming languages and development tools for mobile SDKs. Writing code for peripherals—GPS, accelerometer, and touchscreen. Optimizing user interface for a small screen. Effective memory management on a constrained device. Embedded graphics. Persistent data storage. Prerequisite: CSEN 12 or 912C or equivalent. (4 units)

CSEN 269. Computing for Good: Project Design and Implementation

Project-based course that entails the design and development of a full-fledged application for social impact. Prerequisite: Experience in web and/or mobile development is recommended. (2 units)

CSEN 272. Web Search and Information Retrieval

Basic and advanced techniques for organizing large-scale information on the Web. Search engine technologies. Big data analytics. Recommendation systems. Text/Web clustering and classification. Text mining. Prerequisites: AMTH 108 or AMTH 210, MATH 53 or AMTH 246, and CSEN 179 or 279. (4 units)

CSEN  275. Object-Oriented Analysis, Design, and Programming

Four important aspects of object-oriented application development are covered: fundamental concepts of the OO paradigm, building analysis and design models using UML, implementation using Java/C++/C#, and testing object-oriented systems. Prerequisite: CSEN 79. (4 units)

CSEN 277. Human-Computer Interaction

Fundamentals of human cognition and perception applied to user interfaces. Core concepts, methods, and techniques of user research, human-computer interaction, usability, and user-centered design. User experience evaluation methods and associated metrics. User interface and interaction design heuristics, guidelines, principles, theories, techniques, and applications. Prerequisite: CSEN 12 or 912C or equivalent. (4 units)

CSEN 278. Advanced Web Programming

Advanced topics in Web Application Development; Development with Web Frameworks (Ruby with Rails), implement web services, and management of web security. Prerequisites: CSEN 60 and 161 or demonstrated proficiency. (4 units)

CSEN 279. Design and Analysis of Algorithms

Techniques of design and analysis of algorithms: proof of correctness; running times of recursive algorithms; design strategies: brute-force, divide and conquer, dynamic programming, branch-and-bound, backtracking, and greedy technique; max flow/ matching. Intractability: lower bounds; P, NP, and NP-completeness. Also listed as AMTH 377. Prerequisite: CSEN 912C or equivalent. (4 units)

CSEN 280. Database Systems

Data models. Relational databases. Database design (normalization and decomposition). Data definition and manipulation languages (relational algebra and calculus). Architecture of database management systems. Transaction management. Concurrency control. Security, distribution, and query optimization. Prerequisites: CSEN 12 or 912C or Data Structures class and CSEN 283 or equivalent. (4 units)

CSEN 281. Pattern Recognition and Data Mining

Provides an overview of data analytics methods, including data representation and preprocessing, proximity, finding nearest neighbors, exploratory analysis, dimensionality reduction, association analysis, sequential patterns, supervised inference and prediction, classification, regression, model selection and evaluation, overfitting, clustering, and advanced topics. Students will analyze real-world data using state-of-the-art data science libraries. Prerequisites: AMTH 210 and 245 or equivalent, CSEN 12 or 912C or equivalent. (4 units)

CSEN 282. Energy Management Systems

Energy Management Systems (EMS) is a class of control systems that electric utility companies utilize for three main purposes: monitoring, engagement, and reporting. Monitoring tools allow electric utility companies to manage their assets to maintain the sustainability and reliability of power generation and delivery. Engagement tools help in reducing energy production costs, transmission, and distribution losses by optimizing the utilization of resources and/or power network elements. Reporting tools help track operational costs and energy obligations. Also listed as ECEN 288. (2 units)

CSEN 283. Operating Systems

Fundamentals of operating systems. Processes, Memory, I/O, and File Systems. Implementation and performance issues. Security, multimedia systems, multiple-processor systems. Prerequisites: CSEN 12 or 912C and 20 or 920C or equivalent. (4 units)

CSEN 285. Software Engineering

Systematic approaches to software design, project management, implementation, documentation, and maintenance. Software design methodologies: SA/SD, OOA/OOD. Software quality assurance; testing. Reverse engineering and re-engineering. CASE. Term project. (4 units)

CSEN 286. Software Quality Assurance and Testing

Social factors. Configuration management. Software complexity measures. Functional and structuring testing. Test coverage. Mutation testing. Trend analysis. Software reliability. Estimating software quality. Testing OOPs. Confidence in the software. Software quality control and process analysis. Managerial aspects. Prerequisite: CSEN 285 or equivalent. (2 units)

CSEN 287. Software Development Process Management

Management of the software development process at both the project and organization levels. Interrelationship of the individual steps of the development process. Management techniques for costing, scheduling, tracking, and adjustment. Prerequisite: CSEN 285 or equivalent. (2 units)

CSEN 288. Software Ethics

Broad coverage of ethical issues related to software development. Formal inquiry into normative reasoning in a professional context. Application of ethical theories to workplace issues, viz., cost-benefit analysis, externalities, individual and corporate responsibility, quality and authorship of product. Case studies and in-class topics of debate include computer privacy, encryption, intellectual property, software patents, and copyrights, hackers and break-ins, freedom of speech and the internet, error-free code, and liability. (2 units)

CSEN 290. Computer Graphics

Raster and vector graphics image generation and representation. Graphics primitives, line and shape generation. Scan conversion anti-aliasing algorithms. Simple transformation, windowing, and hierarchical modeling. Interactive input techniques. 3D transformations and viewing, hidden surface removal. Introduction to surface definition with B-spline and Bezier techniques. Surface display with color graphics. Prerequisites: AMTH 245 and CSEN 12 or 912C. (4 units)

CSEN 291 Computational Creativity

Computational Creativity is a subfield of Artificial Intelligence that intersects with the arts, philosophy, and cognitive psychology. The goal of computational creativity is to model, simulate, or replicate creativity using computer systems, through the creation of either autonomous creative systems or collaborative systems that engage with humans on creative tasks. The course will enable students to critically analyze questions concerning the creative capabilities of computer systems and the impact of computing on the arts and society at large, and prepare students to contribute to research in this field. Prerequisites: Good programming skills (4 units)

CSEN 296A. Topics in Computer Science and Engineering

Various subjects of current interest. May be taken more than once if topics differ. (2 units)

CSEN 296B. Topics in Computer Science and Engineering

Various subjects of current interest. May be taken more than once if topics differ. (4 units)

CSEN 303. Logic Design Using HDL

Algorithmic approach to design of digital systems. Use of hardware description languages for design specification. Structural, register transfer, and behavioral, view of HDL. Simulation and synthesis of systems descriptions. Also listed as ECEN 603. Prerequisite: ECEN or CSEN 127 or equivalent. (2 units).

CSEN 305. VLSI Physical Design

Physical design is the phase that follows logic design, and it includes the following steps that precede the fabrication of the IC logic partitioning: cell layout, floor planning, placement, and routing. These steps are examined in the context of very deep submicron technology. Effects of parasitic devices and packaging are also considered. Power distribution and thermal effects are essential issues in this design phase. Also listed as ECEN 389. Prerequisites: CSEN 204 or ECEN 388 or equivalent. (2 units)

CSEN 307. Digital Computer Arithmetic

Fixed-point and floating-point number representation and arithmetic. High-speed addition and subtraction algorithms and architectures. Multiplication and division algorithms and architectures. Decimal arithmetic. Serial vs. parallel arithmetic circuits. Residue number arithmetic. Advanced arithmetic processing units. High-speed number crunchers. Arithmetic codes for error detection. VLSI perspective and reliability issues. Signed-digit (SD) representation of signed numbers. Prerequisite: CSEN 210. (2 units)

CSEN 308. Design for Testability

Principles and techniques of designing circuits for testability. Concept of fault models. The need for test development. Testability measures. Ad hoc rules to facilitate testing. Easily testable structures, PLAs. Scan-path techniques, full and partial scan. Built-in self-testing (BIST) techniques. Self-checking circuits. Use of computer-aided design (CAD) tools. Also listed as ECEN 608. Prerequisite: CSEN 200 or equivalent. (2 units)

CSEN 313. Advanced Computer Architecture

Advanced system architectures. Overview of different computer architecture paradigms. Hardware-supported instruction level parallelism, VLIW architectures, multithreaded processors. Performance and correctness issues (coherency, consistency, and synchronization) for different multiprocessor configuration alternatives (UMA, NUMA). SIMD architecture alternatives. Warehouse massive-scale computing. Prerequisite: CSEN 210. (4 units)

CSEN 315. Web Architecture and Protocols

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. Future of web technology. Prerequisite: CSEN 233 or equivalent. (4 units)

CSEN 317. Distributed Systems

Fundamental algorithms for distributed system architectures, inter-process communications, data consistency, and replication, distributed transactions and concurrency control, distributed file systems, network transparency, fault-tolerant distributed systems synchronization, and reliability. Prerequisites: CSEN 233 and 283 or equivalent. (4 units)

CSEN 318. Parallel Computation Systems

Introduction to parallel processing. Parallel system classifications. Parallel computation models and algorithms. Performance analysis and modeling. Interconnection networks. Vector processors. SIMD and MIMD architectures and their hybrid. Systolic arrays. Dataflow architectures. Introduction to parallel languages and parallelizing compilers. Prerequisites: CSEN 210 and AMTH 247 or instructor approval. (4 units)

CSEN 319. Parallel Computing

How to effectively program parallel computers, from smartphones to large clusters. Types of parallel architectures, routing, data-parallel, shared-memory, and message-passing parallel programming, load balancing, evaluation of parallel algorithms, advanced topics. Students will implement select parallel algorithms for solving real-world data analytics problems, including parallel algorithms for sparse matrix and graph operations. Prerequisites: CSEN 12 or 912C or CSCI 61 or equivalent. (4 units)

CSEN 320. Computer Performance Evaluation

Measurement, simulation, and analytic determination of computer systems performance. Workload characterization. Bottleneck analysis tuning. Prerequisites: CSEN 210 and AMTH 211. (4 units)

CSEN 329. Network Technology

Advanced technologies and protocols for broadband LAN, MAN, WAN, L2 VPN, and L3 VPN, Pseudo Wire, VPLS (Virtual Private LAN Services). Current technologies: tunneling, QoS and security in content delivery, PON (Passive Optical Networks), support for multimedia communication, server farms, server redundancy, GMPLS (Generalized Multi-Protocol Label Switching). Hot Standby Router Protocol. Emerging technologies, e.g., Carrier Ethernet. Prerequisite: CSEN 233 or equivalent. (4 units)

CSEN 331. Wireless and Mobile Networks

TCP/IP architecture. Fundamentals of wireless transmission. IEEE 802.11 architecture and protocols. Bluetooth protocol stack. BLE. IEEE 802.15.4 and ZigBee. Real-time networks. Cellular communication fundamentals. Long-Term Evolution (LTE). Software-defined networking. 5G. Prerequisite: CSEN 233 or equivalent. (4 units)

CSEN 332. Wireless/Mobile Multimedia Networks

This course will cover IMS (Internet Protocol Multimedia Subsystem), an architectural framework for providing IP-based real-time traffic, such as voice and video, in wireless networks. IMS aims at the convergence of data, speech, fixed, and mobile networks and provides real-time services on top of the UMTS (Universal Mobile Telecommunication System) packet-switched domain. Prerequisite: CSEN 331. (4 units)

CSEN 335. High-Performance Networking

Understanding the concepts and technologies of high-speed networks designed for HPC, big data processing, and cloud computing. Layer-2 and layer-3 switching. Infiniband and Ethernet. Network topologies. Edge computing. Software-defined networking to manage high-performance networking. Offloading and network virtualization. Integrating high-performance networking and 5G. Prerequisite: CSEN 233 or equivalent. (2 units)

CSEN 337. Internet Architecture and Protocols

In-depth and quantitative study of Internet algorithms, protocols, and services. Topics include scheduling and buffer/queue management, flow/congestion control, routing, traffic management, and support for multimedia/real-time communication. Prerequisite: CSEN 233 or equivalent. (4 units)

CSEN 338. Image and Video Compression

Image and video compression. Entropy coding. Prediction. Quantization. Transform coding and 2-D discrete cosine transform. Color compression. Motion estimation and compensation. Digital video. Image coding standards such as JPEG, BPG, and JPEG family. Video coding standards such as the MPEG series and the H.26x series. H.264/MPEG-4 AVC coding. HEVC/H.265/MPEG-H Part 2 coding. VVC/H.266/MPEG-I Part 3 coding. Rate-distortion theory and optimization. Visual quality and coding efficiency. Brief intro to 3D video coding and 3D-HEVC. Deep learning approaches. Screen content coding. Video coding for machines. Applications. Also listed as ECEN 641. Prerequisites: AMTH 108, AMTH 245, and basic knowledge of algorithms. (4 units)

CSEN 339 Audio and Speech Compression

Audio and speech compression. Digital audio signal processing fundamentals. Non-perceptual coding. Perceptual coding. Psychoacoustic model. High-quality audio coding. Audio coding standards. A brief introduction to speech coding and speech coding standards. Machine learning for audio and speech coding. Also listed as ECEN 639. Prerequisites: AMTH 108, AMTH 245, and CSEN 279 or equivalent. (2 units)

CSEN 340. Digital Image Processing I

Digital image representation and acquisition, color representation; point and neighborhood processing; image enhancement; morphological filtering; Fourier, cosine, and wavelet transforms. Also listed as ECEN 640. Prerequisite: CSEN 201 or equivalent. (2 units)

CSEN 341. Information Theory

Introduction to the fundamental concepts of information theory. Source models. Source coding. Discrete channel without memory. Continuous channel. Alternate years. Also listed as ECEN 244. Prerequisites: ECEN 241 and AMTH 211. (2 units)

CSEN 342. Deep Learning

Deep neural networks and their applications to various problems, e.g., speech recognition, image segmentation, and natural language processing. Will cover the underlying theory of various types of neural networks including feed-forward, convolutional, and recurrent neural networks, the range of applications to which it has been applied, and current trends in the field. Prerequisite: CSEN 240 or CSEN 281. (4 units)

CSEN 343. Digital Image Processing II

Image restoration using least squares methods in image and spatial frequency domain; matrix representations; blind deconvolution; reconstructions from incomplete data; image segmentation methods; three-dimensional models from multiple views. Also listed as ECEN 643. Prerequisite: CSEN 340. (2 units)

CSEN 344. Computer Vision I

Introduction to image understanding, feature detection, description, and matching; feature-based alignment; structure from motion; stereo correspondence. Also listed as ECEN 644. Prerequisites: CSEN 340 and knowledge of linear algebra. (2 units)

CSEN 345. Computer Vision II

Learning and inference in vision; regression models; deep learning for vision; classification strategies; detection and recognition of objects in images. Also listed as ECEN 645. Prerequisites: CSEN 340 and knowledge of probability. (2 units)

CSEN 346. Natural Language Processing

Natural language processing (NLP) is the art and science of extracting insights from large amounts of natural language. It is one of the most important technologies of the information age. Applications of NLP are everywhere because people communicate almost everything in language: web search, recommendation, emails, customer service, language translation, virtual agents, medical reports, politics, etc. This course presents an introduction to NLP and covers the main models, algorithms, and applications of NLP. A key emphasis of this course is on statistical analysis of large text corpora, and distilling useful structured knowledge from large collections of unstructured documents. Prerequisites: CSEN 240 or CSEN 281. CSEN 342 is optional but recommended. (4 units)  

CSEN 347. Advanced Image and Video Coding

Advanced topics in image and video coding, selected from: Wavelet transform and compression. Sparse coding. Compressive sensing. Standards such as JPEG 2000, JPEG XT, JPEG PLENO, VVC, and HEVC extensions such as SHVC, MV-HEVC, 3D-HEVC, and SCC. Scalable video coding. Multiview and 3D video coding. Screen content coding. High dynamic range HDR. Light-field, point-cloud, and holographic imaging. Distributed video coding. Video communications systems. Congestion control. Rate control. Error control. Transcoding. Machine and deep learning approaches. Image/video coding for machines. Other advanced topics. Prerequisite: CSEN 338 or ECEN 641. (4 units)

CSEN 348. Speech Processing I

Review of sampling and quantization. Introduction to digital speech processing. Elementary principles and applications of speech analysis, synthesis, and coding. Speech signal analysis and modeling. The LPC Model. LPC parameter quantization using line spectrum pairs (LSPs). Digital coding techniques: quantization, waveform coding, predictive coding, transform coding, hybrid coding, and sub-band coding. Applications of speech coding in various systems. Standards for speech and audio coding. Also listed as ECEN 421. Prerequisite: ECEN 233 and/or ECEN 334 or equivalent. (2 units)

CSEN 349. Speech Processing II

Advanced aspects of speech analysis and coding. Analysis-by-Synthesis (AbS) coding of speech, Analysis-as-Synthesis (AaS) coding of speech. Code-excited linear prediction speech coding. Error-control in speech transmission. Application of coders in various systems (such as wireless phones). International standards for speech (and audio) coding. Real-time DSP implementation of speech coders. Speech recognition and biometrics. Research project on speech processing. Also listed as ECEN 422. Prerequisite: ECEN 421. (2 units)

CSEN 351. Internet and E-Commerce Security

Special security requirements of the internet. Secure electronic business transactions. Email security. CGI scripts, cookies, and certified code. Intrusion prevention strategies. Designing secure E-commerce systems. AGENT technologies. Legal requirements for E-Commerce. Prerequisite: CSEN 253. Co-requisite: CSEN 351L. (3 units)

CSEN 351L. Laboratory for CSEN 351

Co-requisite: CSEN 351. (1 unit)

CSEN 352. Advanced Topics in Information Assurance

Topics may include advanced cryptology, advanced computer forensics, secure business transaction models, or other advanced topics in information assurance. May be repeated for credit if topics differ. Prerequisites: AMTH 387 and CSEN 250. (2 units)

CSEN 353. Trust and Privacy in Online Social Network

This course will introduce fundamental concepts in trustworthy computing and privacy; discuss classic (1) trust models, such as direct/indirect model, belief theory-based model, entropy-based model, fuzzy model, and (2) privacy models, such as k-anonymity, l-diversity, t-closeness models; investigate the evolution of trust/privacy attacks and defenses in online social networks; and discuss state-of-the-art trust/privacy researches in online social networks. Prerequisites: AMTH 108 or AMTH 210, and CSEN 179 or 279. (4 units)

CSEN 354. Social Network Analysis and Risk

Social network analysis. Cybersecurity risks. Network measurement. Centrality. Random networks. Submodularity. Diffusion models. Community detection. Sybil defense. Adaptive crawling. Influence maximization. Misinformation containment. Prerequisites: AMTH 108 or AMTH 210, and CSEN 179 or 279. (4 units)

CSEN 359. Design Patterns

Software design patterns and their application in developing reusable software components. Creational, structural, and behavioral patterns are studied in detail and are used in developing a software project. Prerequisite: CSEN 275. (4 units)

CSEN 376. Expert Systems

Overview of tools and applications of expert systems, as well as the theoretical issues: What is knowledge, can it be articulated, and can we represent it? Stages in the construction of expert systems: problem selection, knowledge acquisition, development of knowledge bases, choice of reasoning methods, the life cycle of expert systems. Basic knowledge of representation techniques (rules, frames, objects) and reasoning methods (forward-chaining, backward-chaining, heuristic classification, constraint reasoning, and related search techniques). Requires completion of an expert systems project. Prerequisite: CSEN 266 and a course including predicate logic and lambda calculus. (4 units)

CSEN 377. Data Visualization

This course covers techniques and algorithms for creating effective visualizations based on principles from graphic design, visual art, perceptual psychology, and cognitive science to enhance the understanding of complex data. Topics include Vision & Color, Social & Interactive Visualization, Principle & Design, Perception & Attention, Maps & Cartography, (Social) Network Visualization, Text Visualization, Time Series Visualization, Visual Analytics & Dashboard. Prerequisites: CSEN 277 or CSEN 278 and CSEN 240 or CSEN 281. (4 units)

CSEN 379. Advanced Design and Analysis of Algorithms

Amortized and probabilistic analysis of algorithms and data structures: disjoint sets, hashing, search trees, suffix arrays, and trees. Randomized, parallel, and approximation algorithms. Also listed as AMTH 379. Prerequisite: AMTH 377 or CSEN 279. (4 units)

CSEN 380. Advanced Database Systems

Database system design and implementation. Disk and file organization. Storage and indexes; query processing and query optimization. Concurrency control; transaction management; system failures and recovery. Parallel and distributed databases. MapReduce. Prerequisite: CSEN 280 or equivalent. (4 units)

CSEN 383. Advanced Operating Systems

Advanced topics beyond the fundamentals of operating systems, including a look at different systems software concepts within different components of a modern operating system, and applications beyond the scope of an individual operating system. Prerequisite: CSEN 283 or equivalent. (4 units)

CSEN 385. Formal Methods in Software Engineering

Specification, verification, validation. Notations and the models they support. Classes of specification models: algebraic, state machine, model-theoretic. Appropriate use of formal methods: requirements, design, implementation, testing, maintenance. Data and program specification and design using Z or any other modern formal method. Case studies. Prerequisites: course including predicate logic and lambda calculus. (2 units)

CSEN 386. Software Architecture

Understanding and evaluating software systems from an architectural perspective. Classification, analysis, tools, and domain-specific architectures. Provides intellectual building blocks for designing new systems using well-understood architectural paradigms. Examples of actual system architectures that can serve as models for new designs. Prerequisite: CSEN 385. (2 units)

CSEN 389. Energy-Efficient Computing

This course covers energy-efficient software practices. Historically, software has always been written to run faster and faster, and energy has always been considered a plentiful resource. However, it has been shown that computers use a lot of energy, which may not always be so plentiful, leading to the redesign of traditional software solutions in different areas. The focus of the course will be on operating systems, networks, compilers, and programming. Prerequisites: CSEN 233 or equivalent and CSEN 283 or equivalent. (2 units)

CSEN 396A. Advanced Topics in Computer Science and Engineering

Various subjects of current interest. May be taken more than once if topics differ. See department website for current offerings and descriptions. (2 units)

CSEN 396B. Advanced Topics in Computer Science and Engineering

Various subjects of current interest. May be taken more than once if topics differ. See department website for current offerings and descriptions. (4 units)

CSEN 400. Computer Science and Engineering Graduate Seminar

Regularly scheduled seminars on topics of current interest in the field of computer science and engineering. May apply a maximum of 1 unit of credit from CSEN 400 to any graduate degree in the Department of Computer Science and Engineering. Consult the department for additional information. Prerequisite: Completion of 12 or more graduate units at SCU. P/NP grading. (1 unit)

CSEN 490. Mathematical Reasoning in Computer Science

(Seminar Style) Short introduction to the praxis of mathematical proofs. Students will write and present proofs and papers on instructor-approved topics related to computer science and engineering. Stress is on mathematical exactness. Maximum enrollment of 10. Enrollment is by preference to Ph.D. students, but is open to other students as space allows. Prerequisite: Open to Ph.D. students or with instructor approval. (2 units)

CSEN 493. Directed Research

Special research directed by a faculty member. By arrangement. Research must be directed by a tenure-track faculty member in computer science and engineering. Limited to M.S. and Ph.D. students in computer science and engineering. Must be supervised by a regular CSE full-time faculty member. Prerequisite: Registration requires the faculty member’s and department chair's approval. (1–6 units per quarter, for a total of a maximum of 6 units combining CSEN 493, 494, and 499 for M.S. students)

CSEN 494. Interdisciplinary Research

Special research directed by a faculty member. By arrangement. Research must be directed by a tenure-track faculty member in engineering. Limited to M.S. and Ph.D. students in Computer Science and Engineering. Must be supervised by a regular full-time faculty member. Prerequisite: Registration requires the faculty member’s and department chair's approval. (1–6 units per quarter, for a total of a maximum of 6 units combining CSEN 493, 494, and 499 for M.S. students)

CSEN 497. Master’s Thesis Research

By arrangement. Research must be directed by a tenure-track faculty member in computer science and engineering. Limited to M.S. students in computer science and engineering. Must be supervised by a regular CSE full-time faculty member. Prerequisite: Registration requires the faculty member’s and department chair's approval. (1–8 units per quarter, for a total of at least 8 units)

CSEN 498. Ph.D. Thesis Research

By arrangement. Research must be directed by a tenure-track faculty member in computer science and engineering. Limited to Ph.D. students in computer science and engineering. Must be supervised by a regular CSE full-time faculty member. Prerequisite: Registration requires the faculty member’s and department chair's approval. (1–10 units per quarter, for a total of 36 units)

CSEN 499. Independent Study

Special problems. By arrangement. Work must be directed by a full-time faculty member. Limited to computer science and engineering students. Prerequisite: Registration requires the faculty member’s and department chair's approval.  (1–6 units per quarter, for a total of a maximum of 6 units combining CSEN 493, 494, and 499 for M.S. students)

CSEN 912C. Abstract Data Types and Data Structures

Intense coverage of topics related to 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: a 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++. Foundation course not for graduate credit. Prerequisite: A grade of B or higher in a programming language course. (2 units)

CSEN 920C. Embedded Systems and Assembly Language

Intense coverage of topics related to embedded systems and assembly language. 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. Foundation course not for graduate credit. Prerequisite: A grade of B or higher in a programming language course. (2 units)

CSEN 921C. Logic Design

Intense coverage of topics related to logic design. Boolean functions and their minimization. Designing combinational circuits, adders, multipliers, multiplexers, and 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 conjunction with FPGAs. Foundation course not for graduate credit. Also listed as ECEN 921C. (2 units)