20191 Undergrad Flashcards
CSCI 102L
Fundamentals of Computation
Fundamental concepts of algorithmic thinking as a primer to programming. Introduction to C++.
- Mark Redekopp
- Easy-medium
- Slower on ramp to CSCI 103, introduction to C++ / students should have no or limited experience / required for PEGRs and new minors
CSCI 103L
Introduction to Programming
Basic datatypes, assignments, control statements (if, switch, for, while), input/output (printf, scanf, cin, cout), functions, arrays, structures, recursion, dynamic memory, file handling. Programming in C/C++.
COREQ: CSCI 109 or EE109
- Andrew Goodney, Olivera Grujic
- Medium
- Introduction to C++ for CS majors / moves quickly / experience not necessary but is helpful / good time management necessary
CSCI 104L
Data Structures and Object-Oriented Design
Introduces the student to standard data structures (linear structures such as linked lists, (balanced) trees, priority queues, and hashtables), using the C++ programming language.
PREREQ: CSCI 103
COREQ: CSCI 170
- Sandra Batista, Mark Redekopp
- Medium-hard
- Continuation of C++, assignments/homework take a long time, longer than students often expect or are told / must plan / manage time well / after this course well prepared for internships
CSCI 109
Introduction to Computer Science
An introduction to, and overview of, Computer Science; both as a discipline and a body of knowledge.
- Andrew Goodney
- Easy
- Introduction to the major / overview of the discipline and its sub-disciplines / history of CS / emerging and future trends
CSCI 170
Discrete Methods in Computer Science
Sets, functions, series. Big-O notation and algorithm analysis. Propositional and first-order logic. Counting and discrete probability. Graphs and basic graph algorithms. Basic number theory.
PREREQ: CSCI 103 and 1 from (CSCI 109 or EE 109)
- TBD
- Medium
- Discrete Math; the algorithmic math taught in CSCI 170 is applied the next week or two in CSCI 104, particulaly recruision, induction, probability, combinatorics, graphs.
CSCI 201L
Principles of Software Development
Object-oriented paradigm for programming-in-the-large in Java; writing sophisticated concurrent applications with animation and graphic user interfaces; using professional tools on team project.
PREREQ: CSCI 104L
- Jeffrey Miller
- Medium-hard
- Continuation of C++, large focus on group work, introduction and application of Java, beginning of software engineering standards
CSCI 270
Introduction to Algorithms and Theory of Computing
Algorithm analysis. Greedy algorithms, divide and conquer, dynamic programming, graph algorithms. NP-completeness and basic recursion theory and undecidability. Sorting lower bounds. Number-theory based cryptography.
PREREQ: CSCI 104 and CSCI 170
- Aaron Cote
- Medium-hard
- Builds entirely off CSCI 170 (170 is a predictor of performance in 270). Algorithms.
CSCI 280
Video Game Production
History of video games; overview of game genres; phases of video game development (concept, preproduction, production, post-production); roles of artists, programmers, designers, and producers.
CROSSLIST: This course is offered by the ITP department but may qualify for major credit in CSCI. To register, enroll in ITP 280.
- Tom Sloper
CSCI 281
Pipelines for Games and Interactives
- Scott Easley
- Easy
- Introductory level course for CS games students, focus on graphics and visual design - students create a portfolio.
CSCI 310
Software Engineering
Introduction to the software engineering process and software lifecycle. Covers project management, requirements, architecture, design, implementation, testing, and maintenance phase activities in team based projects. Prerequisites: CSCI 201. Duplicates credit in former CSCI 377.
PREREQ: CSCI 201
- William Halfond
- Medium
- Software Engineering life cycle / project management course / focus is on documentation and standards for managing software projects - not heavy in programming
CSCI 350
Introduction to Operating Systems
Basic issues in concurrency, deadlock control, synchronization scheduling, memory management, protection and access control, inter-process communication, and structured design. Laboratory experiences with Unix-like operating system. Duplicates credit in CSCI 402.
PREREQ: CSCI 201 and 1 from (CSCI 356 or EE 354)
- Tanya Ryutov
- Hard
- One of the most rigorous upper division courses, large programming work load, avoid pairing with WRIT 340 and other time consuming courses
CSCI 353
Introduction to Internetworking
Global Internet: design principles, layering, protocol design/analysis.Networked applications, Internet structure/architecture,Protocols for transport/congestion control, network layer/routing,link layer/MAC. Network security. Prerequisites: CSCI 201. Recommended preparation: Familiarity with C and C++. Duplicates credit in EE 450.
PREREQ: CSCI 201
- William Cheng
- Medium
- Overview of networking from a programming perspective - duplicates credit in EE 450 (3 unit option, but that has more of a hardware focus) - students can take either if in CECS or CSGM
CSCI 356
Introduction to Computer Systems
Computer organization; entity abstraction and representation; program execution; code optimization; memory usage; exception handling; processing control; computer performance; hands-on work done in C and assembly.
PREREQ: CSCI 104
- Marco Paolieri, Andrew Goodney
- Medium
- Replaced EE 352 in our curriculum, computer hardware from a programmer’s perspective, prerequisite to CSCI 350 Operating Systems; duplicates credit in EE 352
CSCI 368
Programming Graphical User Interfaces
Programming applications with dynamic graphical user interfaces. Topics include events, controls, resources, data bindings, styles, and user experience.
PREREQ: 1 from (CSCI 104 or ITP 365)
Cross-listed to ITP 368.
- Kendra Walther
CSCI 380
Video Game Programming
Underlying concepts and principles required for programming video games (topics include vectors, transformations, 3-D math, geometric primitives, matrices).
PREREQ: 1 from (CSCI-104 or ITP-365)
Cross-listed to ITP 380. Recommend mechanics and vector math before hand or concurrently via PHYS 151.
- Clark Kromenaker
- Sanjay Madhav
CSCI 401
Capstone: Design and Construction of Large Software Systems
Group project with an outside stakeholder to develop real-world software solutions to large-scale problems. Topics include software engineering, professional preparation, and recent computer science research. Duplicates credit in CSCI 477a and CSCI 477b.
PREREQ: (CSCI 270 and CSCI 310)
- Jeffrey Miller
- Medium
- Taken after CSCI 270 and CSCI 310. Large scale group project. Professor receives bids from outside orgs, but students may pitch their own project. Can be taken twice, for capstone and tech elective.
CSCI 402
Operating Systems
Concurrency, deadlock control, synchronization, process and thread scheduling, memory management, file systems, security and access control, communication and networking, distributed file systems, data management.
- Bill Cheng
- Medium-hard
- Operating Systems taken by Graduate Students. If a student has take CSCI 350, then they do not need to take CSCI 402.
CSCI 404
Capstone: Creating Your High-Tech Startup
Capstone class in which students create their own technology startup, leveraging comprehensive CS knowledge and best industry practices.
PREREQ: (CSCI 201 and CSCI 270 and ITP 466)
- TBD
- Easy-medium
- Spring only. Effective, Spring 2019 - one semester capstone. Work on their own start up company/project in group setting.
CSCI 420
Computer Graphics
Computer graphics, OpenGL, 2D and 3D transformations, Bzier splines, computer animation, rendering including ray tracing, shading and lighting, artistic rendering, virtual reality, visualization.
PREREQ: CSCI 104 and 1 from (MATH 225 or (EE 141 and MATH 126) or (EE 141 and MATH 127) or (EE 141 and MATH 129))
Students must be in year 3 or above of their program to enroll. Registration closed to Freshmen and Sophomore.
- TBD
- Medium-hard
- Graphics, needs linear algebra, preferably MATH 225, but EE 141 is OK with at least CALC II.
CSCI 435
Professional C++
Applications of advanced concepts in C++ including lambda expressions, template metaprogramming, secure coding, parallel programming techniques, and the boost library.
PREREQ: 1 from (CSCI 104 or ITP 365)
CROSSLIST: ITP 435
- Sanjay Madhav
- Medium
- ITP 435 very popular technical elective
CSCI 439
Compiler Development
Practical applications of techniques used to develop a programming language compiler.
PREREQ: ITP 435
CROSSLIST: ITP 439
- Sanjay Madhav
- Medium
- Tech elective
CSCI 445L
Introduction to Robotics
Designing, building and programming mobile robots; sensors, effectors, basic control theory, control architectures, some advanced topics, illustrations of state-of-the-art. Teamwork; final project tested in a robot contest. Junior standing or higher.
PREREQ: CSCI 103.
Registration open only to Junior, Senior.
- Heather Culbertson
- Easy-medium
- Can be taken after CSCI 103 or intro programming; design and hardware, operating of MOBILE robots; tech elective
CSCI 450
Introduction to Computer Networks
Network architectures; layered protocols, network service interface; local networks; long-haul networks; internal protocols; link protocols; addressing; routing; flow control; higher level protocols.
Crosslist: This course is offered by the EE department but may qualify for major credit in CSCI. To register, enroll in EE 450.
Registration open only to Junior, Senior.
- Ali Zahid
CSCI 452
Parallel and Distributed Computation
Introduction to parallel programming techniques, models and optimization strategies; Application mapping to multi-core, accelerator, GPU and cloud platforms; High Performance Computing and Data Science applications.
PREREQ: 1 from (EE 355 or CSCI 201)
CROSSLIST: EE 451
Cross listed to EE 451. Can take after CSCI 201, tech elective for CS, required option in CECS.
- Xuehai Qian
CSCI 455x
Introduction to Programming Systems Design
Intensive introduction to programming principles, discrete mathematics for computing, software design and software engineering concepts. Not available for credit to computer sciencemajors, graduate or undergraduate.
- Claire Bono
- Medium
- Accelerated introduction to programming using C++ AND JAVA, discrete math, software engineering, required intro for CS Scientists & Engineers, or upper division non majors
CSCI 457
Computer Systems Organization
Register Transfer level machine organization; performance; arithmetic; pipelined processors; exceptions, out-of-order and speculative execution, cache, virtual memory, multi-core multi-threaded processors, cache coherence.
PREREQ: EE 354
CROSSLIST: EE 457
- Gandhi Puvvada
- Medium-hard
- Cross listed to EE 457. Required for CECS, usually has a lot grad students. Heavy workload.
CSCI 485
File and Database Management
File input/output techniques, basic methods for file organization, file managers, principles of databases, conceptual data models, and query languages.
PREREQ: CSCI 201
- Shahram Ghandeharizadeh
- Medium-hard
- Introduction to Databases, if students take CSCI 485 they do not need CSCI 585 at graduate level
CSCI 487
Programming Game Engines
Techniques for building the core components of a game engine; 2-D/3-D graphics, collision detection, artificial intelligence algorithms, shading, programming input devices.
PREREQ: ITP-380
CROSSLIST: ITP 485
- Matthew Whiting
- Medium-hard
- Cross listed to ITP 485 - required for CSGM.
CSCI 490x
Directed Research
Individual research and readings. Not available for graduate credit.
Registration open only to Juniors and Seniors.
CSCI 495
Senior Project
An original project will be constructed applying computer technology (in either hardware or software) to produce a result useful in the physics classroom or laboratory.
CROSSLIST: PHYS 495