Saturday, March 25, 2017
Computer Science and Engineering CSE
Computer Science and Engineering CSE
Courses
For course descriptions not found in the UC San Diego General Catalog, 201314, please contact the department for more information.
A tentative schedule of course offerings is available from the Department of CSE each spring for the following academic year. The tentative schedule for 201314 is also found at http://cse.ucsd.edu/node/379.
Lower Division
CSE 3. Fluency in Information Technology (4)
Introduces the concepts and skills necessary to effectively use information technology. Includes basic concepts and some practical skills with computer and networks. Prerequisites: none.
CSE 4GS. Mathematical Beauty in Rome (4)
Exploration of topics in mathematics and engineering as they relate to classical architecture in Rome, Italy. In depth geometrical analysis and computer modeling of basic structures (arches, vaults, domes), and on-site studies of the Colosseum, Pantheon, Roman Forum, and St. Peters Basilica. Prerequisites: Math 10A or Math 20A; departmental approval, and corequisite of CSE 6GS.
CSE 6GS. Mathematical Beauty in Rome Lab (4)
Companion course to CSE 4GS where theory is applied and lab experiments are carried out in the field in Rome, Italy. For final projects, students will select a complex structure (e.g., the Colosseum, the Pantheon, St. Peters, etc.) to analyze and model, in detail, using computer-based tools. Prerequisites: Math 10A or Math 20B; departmental approval, and corequisite of CSE 4GS.
CSE 5A. Introduction to Programming I (4)
(Formerly CSE 62A) Introduction to algorithms and top-down problem solving. Introduction to the C language, including functions, arrays, and standard libraries. Basic skills for using a PC graphical user interface operating system environment. File maintenance utilities are covered. (A student may not receive credit for CSE 5A after receiving credit for CSE 10 or CSE 11 or CSE 8B or CSE 9B or CSE 62B or CSE 65.) Prerequisites: A familiarity with high-school level algebra is expected, but this course assumes no prior programming knowledge.
CSE 7. Introduction to Programming with Matlab (4)
Fundamentals of computer programming and basic software design covering topics related to variables, functions, and control structures; writing, testing, and debugging programs in Matlab. Examples focus on scientific applications. Recommended preparation: high school algebra and familiarity with the computing milieu. Students with limited computing experience may take CSE 3 for preparation. Students may not take CSE 7 after completing COGS 18. Program or material fee may apply. Prerequistes: none.
CSE 8A. Introduction to Computer Science: JAVA (3)
Introductory computer science course designed for students interested in computing. No prior programming experience is assumed. Learn fundamental concepts of applied computer science using media computation. Must be taken concurrently with CSE 8AL. CSE 8A is part of a three-track course (CSE 8A, CSE 8AL, and CSE 8B) that is equivalent to CSE 11. Students should take CSE 8B to complete this track. Students who have taken CSE 8B or CSE 11 may not take CSE 8A. Recommended preparation: high school algebra and familiarity with computing concepts. Prerequisites: corequisite of CSE 8AL.
CSE 8AL. Introduction to Computer Science: JAVA Lab (1)
Exercises in the theory and practice of computer science under the supervision of an instructor. Hands-on experience with designing, editing, compiling, and executing programming constructs and applications. Must be taken concurrently with CSE 8A. CSE 8AL is part of a three-track course (CSE 8A, CSE 8AL, and CSE 8B) that is equivalent to CSE 11. Students should take CSE 8B to complete this track. Students who have taken CSE 8B or CSE 11 may not take CSE 8AL. Recommended preparation: high school algebra and familiarity with computing concepts. Prerequisites: corequisite of CSE 8A.
CSE 8B. Introduction to Computer Science: Java B (4)
Continuation of the Java language. Continuation of programming techniques. More on inheritance. Exception handling. CSE 8A is part of a three-track course (CSE 8A, CSE 8AL, and CSE 8B) that is equivalent to CSE 11. Students who have taken CSE 11 may not take CSE 8B. Recommended preparation: high school algebra and familiarity with computing concepts or CSE 8A and CSE 8AL.
CSE 11. Introduction to Computer Science and Object-Oriented Programming: Java (4)
An accelerated introduction to computer science and programming using the Java language. Basic UNIX. Modularity and abstraction. Documentation, testing and verification techniques. Basic object-oriented programming, including inheritance and dynamic binding. Exception handling. Event-driven and dynamic binding. Exception handling. Event-driven programming. Experience with AWT library or other similar library. The CSE Course Advisory Placement Exam assists students with self-placement in CSE 3, CSE 8A, CSE 11, and CSE 12. Exam at http://www.cse.ucsd.edu/node/43. Students who have completed CSE 8B may not take CSE 11. Recommended preparation: high school algebra and familiarity with computing concepts and a course in a compiled language. Prerequisites: none.
CSE 12. Basic Data Structures and Object-Oriented Design (4)
Use and implementation of basic data structures including linked lists, stacks, and queues. Use of advanced structures such as binary trees and hash tables. Object-oriented design including interfaces, polymorphism, encapsulation, abstract data types, pre-/post-conditions. Recursion. Uses Java and Java Collections. Prerequisites: CSE 8B or CSE 11, and concurrent enrollment with CSE 15L.
CSE 15L. Tools and Technique Laboratory (2)
Hands-on exploration of software development tools and techniques. Investigation of the scientific process as applied to software development and debugging. Emphasis is on weekly hands-on laboratory experiences, development of laboratory notebooking techniques as applied to software design. Prerequisites: CSE 8B, or CSE 11. Concurrent enrollment with CSE 12.
CSE 20. Introduction to Discrete Mathematics (4)
Basic discrete mathematical structure: sets, relations, functions, sequences, equivalence relations, partial orders, and number systems. Methods of reasoning and proofs: propositional logic, predicate logic, induction, recursion, and pigeonhole principle. Infinite sets and diagonalization. Basic counting techniques; permutation and combinations. Applications will be given to digital logic design, elementary number theory, design of programs, and proofs of program correctness. Credit not offered for both Math 15A and CSE 20. Equivalent to Math 15A. Prerequisites: CSE 8A or CSE 8B or CSE 11. CSE 8B or CSE 11 may be taken concurrently with CSE 20/ Math 15A.
CSE 21. Mathematics for Algorithms and Systems (4)
This course will provide an introduction to the discrete mathematical tools needed to analyze algorithms and systems. Enumerative combinatorics: basic counting principles, inclusion-exclusion, and generating functions. Matrix notation. Applied discrete probability. Finite automata. Credit not offered for both Math 15B and CSE 21. Equivalent to Math 15B. Prerequisites: CSE 20 or Math 15A.
CSE 30. Computer Organization and Systems Programming (4)
Introduction to organization of modern digital computersunderstanding the various components of a computer and their interrelationships. Study of a specific architecture/machine with emphasis on systems programming in C and Assembly languages in a UNIX environment. Prerequisites: CSE 12, CSE 15L, or consent of instructor.
CSE 80. UNIX Lab (2)
The objective of the course is to help the programmer create a productive UNIX environment. Topics include customizing the shell, file system, shell programming, process management, and UNIX tools. Prerequisites: CSE 8B or CSE 11.
CSE 86. C++ for Java Programmers (2)
Helps the Java programmer to be productive in the C++ programming environment. Topics include the similarities and differences between Java and C++ with special attention to pointers, operator overloading, templates, the STL, the preprocessor, and the C++ Runtime Environment. Prerequisites: CSE 12 or consent of instructor.
CSE 87. Freshman Seminar (1)
The Freshman Seminar Program is designed to provide new students with the opportunity to explore an intellectual topic with a faculty member in a small seminar setting. Freshman Seminars are offered in all campus departments and undergraduate colleges, and topics vary from quarter to quarter. Enrollment is limited to fifteen to twenty students, with preference given to entering freshmen. Prerequisites: none.
CSE 91. Perspectives in Computer Science and Engineering (2)
A seminar format discussion led by CSE faculty on topics in central areas of computer science, concentrating on the relation among them, recent developments, and future directions. Prerequisites: majors only.
CSE 99. Independent Study in Computer Science and Engineering (4)
Independent reading or research by special arrangement with a faculty member. Prerequisites: lower-division standing. Completion of thirty units at UC San Diego with a UC San Diego GPA of 3.0. Special Studies form required. Department stamp required. Consent of instructor and approval of the department.
Upper Division
CSE 100. Advanced Data Structures (4)
High-performance data structures and supporting algorithms. Use and implementation of data structures like (un)balanced trees, graphs, priority queues, and hash tables. Also memory management, pointers, recursion. Theoretical and practical performance analysis, both average case and amortized. Uses C++ and STL. Credit not offered for both Math 176 and CSE 100. Equivalent to Math 176. Prerequisites: CSE 12, CSE 21 or Math 15B, or consent of instructor.
CSE 101. Design and Analysis of Algorithms (4)
Design and analysis of efficient algorithms with emphasis of nonnumerical algorithms such as sorting, searching, pattern matching, and graph and network algorithms. Measuring complexity of algorithms, time and storage. NP-complete problems. Credit not offered for both Math 188 and CSE 101. Equivalent to Math 188. Prerequisites: CSE 12, CSE 21 or Math 15B, or Math 100A, or Math 103A and CSE 100, or Math 176. Majors only.
CSE 103. A Practical Introduction to Probability and Statistics (4)
Distributions over the real line. Independence, expectation, conditional expectation, mean, variance. Hypothesis testing. Learning classifiers. Distributions over R^n, covariance matrix. Binomial, Poisson distributions. Chernoff bound. Entropy. Compression. Arithmetic coding. Maximal likelihood estimation. Bayesian estimation. CSE 103 is not duplicate credit for ECE 109, Econ 120A, or Math 183. Prerequisites: Math 20A and Math 20B.
CSE 105. Theory of Computability (4)
An introduction to the mathematical theory of computability. Formal languages. Finite automata and regular expression. Push-down automata and context-free languages. Computable or recursive functions: Turing machines, the halting problem. Undecidability. Credit not offered for both Math 166 and CSE 105. Equivalent to Math 166. Prerequisites: CSE 12, CSE 21 or Math 15B, or Math 100A, or Math 103A.
CSE 107. Introduction to Modern Cryptography (4)
Topics include private and public-key cryptography, block ciphers, data encryption, authentication, key distribution and certification, pseudorandom number generators, design and analysis of protocols, zero-knowledge proofs, and advanced protocols. Emphasizes rigorous mathematical approach including formal definitions of security goals and proofs of protocol security. Prerequisites: CSE 21 or Math 15B, CSE 101 or Math 188, CSE 105 or Math 166.
CSE 110. Software Engineering (4)
Introduction to software development and engineering methods, including specification, design, implementation, testing, and process. An emphasis on team development, agile methods, and use of tools such as IDEs, version control, and test harnesses. CSE 70 is renumbered to CSE 110: students may not receive credit for both CSE 70 and CSE 110. Prerequisites: CSE 12, CSE 21, or Math 15B.
CSE 111. Object-Oriented Software Design (4)
Introduction to object-oriented analysis and design. Object-oriented modeling methods for analysis and design, object-oriented general design paradigms, object-oriented design techniques. Cyclic development of object-oriented systems. Prerequisites: CSE 70 or CSE 110.
CSE 112. Advanced Software Engineering (4)
This course will cover software engineering topics associated with large systems development such as requirements and specifications, testing and maintenance, and design. Specific attention will be given to development tools and automated support environments. Prerequisites: CSE 111.
CSE 113. Errors, Defects, and Failures (4)
Errors, resulting in defects and ultimately system failure, occur in engineering and also other areas such as medical care. The ways in which failures occur, and the means for their prevention, mitigation, and management will be studied. Emphasis will be on software systems but also include the study of practice of other areas. Prerequistes: CSE 12 and CSE 21.
CSE 118. Ubiquitous Computing (4)
Explores emerging opportunities enabled by cheap sensors and networked computing devices. Small research projects will be conducted in teams, culminating in project presentations at the end of the term. Section will cover material relevant to the project, such as research methods, software engineering, teamwork, and project management. Prerequisites: any course from the following: CSE 131, CSE 132B, Cog Sci 102C, Cog Sci 121, Cog Sci 184, ECE 111, ECE 118, ECE 191, ECE 192, COMM 102C, or ICAM; or consent of instructor.
CSE 120. Principles of Computer Operating Systems (4)
Basic functions of operating systems; basic kernel structure, concurrency, memory management, virtual memory, file systems, process scheduling, security and protection. Prerequisites: CSE 30, and CSE 101 or Math 188, and CSE 70 or CSE 110.
CSE 121. Operating Systems: Architecture and Implementation (4)
(Formerly CSE 171B.) Case study of architecture and implementation of a selected modern operating system. In-depth analysis through a detailed study of source code. Topics include process creation, context-switching, memory allocation, synchronization mechanisms, interprocess communication, I/O buffering, device drivers, and file systems. Prerequisites: CSE 120.
CSE 123. Computer Networks (4)
(Renumbered from CSE 123A.) Introduction to concepts, principles, and practice of computer communication networks with examples from existing architectures, protocols, and standards with special emphasis on the Internet protocols. Layering and the OSI model; physical and data link layers; local and wide area networks; datagrams and virtual circuits; routing and congestion control; internetworking. Transport protocols. Credit may not be received for both CSE 123A and 158A, or CSE 123B and 158B. Prerequisites: CSE 120 or consent of instructor. Majors only.
CSE 124. Networked Services (4)
(Renumbered from CSE 123B.) The architecture of modern networked services, including data center design, enterprise storage, fault tolerance, and load balancing. Protocol software structuring, the Transmission Control Protocol (TCP), remote procedure calls, protocols for digital audio and video communication, overlay and peer-to-peer systems, secure communication. Credit may not be received for both CSE 124 and ECE 158B. Students may not receive credit for both CSE 123B and CSE 124. Prerequisites: CSE 120 or consent of instructor. Majors only.
CSE 125. Software System Design and Implementation (4)
Design and implementation of large, complex software systems involving multiple aspects of CSE curriculum. Emphasis is on software system design applied to a single, large group project with close interaction with instructor. Prerequisites: senior standing with substantial programming experience, and consent of instructor. Department stamp required.
CSE 127. Introduction to Computer Security (4)
Topics include basic cryptography, security/threat analysis, access control, auditing, security models, distributed systems security, and theory behind common attack and defense techniques. The class will go over formal models as well as the bits and bytes of security exploits. Prerequisites: CSE 21 or Math 15B, and CSE 120.
CSE 130. Programming Languages: Principles and Paradigms (4)
(Formerly CSE 173.) Introduction to programming languages and paradigms, the components that comprise them, and the principles of language design, all through the analysis and comparison of a variety of languages (e.g., Pascal, Ada, C++, PROLOG, ML.) Will involve programming in most languages studied. Prerequisites: CSE 12, and CSE 100 or Math 176, CSE 105 or Math 166.
CSE 131. Compiler Construction (4)
(Formerly CSE 131B.) Introduction to the compilation of programming languages, practice of lexical and syntactic analysis, symbol tables, syntax-directed translation, type checking, code generation, optimization, interpretation, and compiler structure. (Students may receive repeat credit for CSE 131A and CSE 131B by completing CSE 131.) Prerequisites: CSE 100 or Math 176, CSE 105 or Math 166, CSE 110, and CSE 130.
CSE 132A. Database System Principles (4)
Basic concepts of databases, including data modeling, relational databases, query languages, optimization, dependencies, schema design, and concurrency control. Exposure to one or several commercial database systems. Advanced topics such as deductive and object-oriented databases, time allowing. Prerequisites: CSE 100 or Math 176.
CSE 132B. Database Systems Applications (4)
Design of databases, transactions, use of trigger facilities and datablades. Performance measuring, organization of index structures. Prerequisites: CSE 132A or equivalent.
CSE 134B. Web Client Languages (4)
Design and implementation of interactive World Wide Web clients using helper applications and plug-ins. The main language covered will be Java. Prerequisites: CSE 100 or Math 176. Majors only.
CSE 135. Server-side Web Applications (4)
Design and implementation of dynamic web-based applications. Multitier architecture, scripting languages, SQL, XML, session handling, nonbrowser clients, web services, and scalability, security, and usability in the web context. Prerequisites: CSE 100 or Math 176. Majors only.
CSE 136. Enterprise-class Web Applications (4)
Design and implementation of large-scale web-based applications. Modeling organizational needs, design and revision management, J2EE or similar software platforms, web
Available link for download
Labels:
and,
computer,
cse,
engineering,
science