UGRD > CS
Computer Science Courses
CS 105 An Introduction to Computer Concepts +
Description:
This course presents an overview of the role of computers in society: their application and misapplication, their capabilities and limitations. Applications may include artificial intelligence, medical, aerospace and business use of computers. Computer hardware and associated technologies are discussed. Computer programming is taught from a non-mathematical, problem-solving point of view; the course objective is to help students acquire an understanding of the programming process, rather than to develop complex or extended computer programs. More Info
Offered in:CS 109 Computer Programming for Engineers +
Description:
An introduction to computer programming for engineering students. This course is not intended for computer science majors. More Info
Offered in:CS 110 Introduction to Computing +
Description:
An introduction to computer programming: the concepts involved in use of a higher level language and the program development process. The goal of this course is proficiency in the design and implementation of programs of significant size and complexity. This course is quite demanding because of the length of the programming exercises assigned. This is the first course in the computer science sequence. More Info
Offered in:CS 114L Introduction To Java +
Description:
An introductory course in Java programming that exposes students to the concepts involved in using a higher-level, object-oriented programming language. The course will explain the program development process and give students lots of hands-on experience writing small Java programs. More Info
Offered in:- TBA
CS 119 Computer Language Supplement +
Description:
This course addresses the dilemma of students who studied the equivalent of CS 110 in a language other than the one currently used in our CS 110 course. These students may want to learn the current language of CS 110, or may be interested in the material of CS 110 as a means of preparing for the follow-up course, which is CS 210. Such students can, with permission of the department, register for CS 119 for two credits. They then make arrangement to attend a section of CS 110. They are required to do all the assignments, examinations, etc., of regular CS 110 students. Thus, in virtually all respects, students who register for CS 119 are really CS 110 students, except that CS 119 meets no core curriculum requirement and does not count towards any computer science major requirement. More Info
Offered in:CS 187SL Science Gateway Seminar I +
Description:
This is a two-semester course on technology, in particular information technology (IT) and how it relates to our lives. Students will read both fiction and non-fiction where technology is an issue, and discuss it in written work and orally, both individually and in small groups. The overall goal is to learn about and discuss various facets of information technology and its social implications. More Info
Offered in:- TBA
CS 188SL Science Gateway Seminar II +
Description:
This is a two-semester course on technology, in particular information technology (IT) and how it relates to our lives. Students will read both fiction and non-fiction where technology is an issue, and discuss it in written work and orally, both individually and in small groups. The overall goal is to learn about and discuss various facets of information technology and its social implications. More Info
Offered in:CS 210 Intermediate Computing with Data Structures +
Description:
The design and implementation of computer programs in a high-level language, with emphasis on proper design principles and advanced programming concepts, including dynamic data structures and recursion. The assignments are designed to introduce the student to a variety of topics in computing: data structures and ADTs, Lists, Stacks, Queues, Ordered Lists, Binary Trees, and searching and sorting techniques. More Info
Offered in:CS 220 Applied Discrete Mathematics +
Description:
An introduction to the mathematical structures and concepts used in computing: sets, mathematical induction, ordered sets, Boolean algebras, predicate calculus, trees, relations and lattice theory. Formal and informal theories and corresponding mathematical proofs are taught. More Info
Offered in:CS 240 Programming in C +
Description:
C programming for programmers with prior knowledge of some high-level language (e.g., one semester of programming in Java). The course treats C as a machine-level language and as a general-purpose language; it covers number representation, masking, bitwise operations, and memory allocation, as well as more general topics such as dynamic data structures, file I/O, separate compilation, program development tools, and debugging. More Info
Offered in:CS 271L Introduction to Cognitive Science +
Description:
Cognitive science is an interdisciplinary field fundamentally concerned with furthering our understanding of the development, underlying processes, and implementation of language, perception, problem-solving, learning, memory, and other intelligent capacities. This course offers an introduction to this science for all levels of undergraduate majors in psychology, computer science, biology, and other related fields. More Info
Offered in:CS 285L Social Issues and Ethics in Computing +
Description:
This course explores some of the ethical and societal issues that are raised by computing. Topics include privacy, freedom of expression, intellectual property, liability, the effect of computing on social interaction, and human-computer interface issues. Students write an analytical paper on an appropriate topic and also present their findings to the class. More Info
Offered in:CS 310 Advanced Data Structures and Algorithms +
Description:
A systematic study of the methods of structuring and manipulating data in computing. Abstract data types. The design and analysis of algorithms. Advanced techniques for program development and organization. More Info
Offered in:CS 341 Computer Architecture and Organization +
Description:
Computer hardware concepts and hardware-level programming for C programmers. Topics include digital logic circuits, computer organization of a microprocessor system (i.e., how CPU, memory, and i/o interface chips are interconnected), serial and parallel port interfacing, hardware programming in C and C/assembler, interrupt programming, device drivers. The necessary assembly language is also covered. The course includes a hands-on lab meeting one hour per week. More Info
Offered in:CS 410 An Introduction to Software Engineering +
Description:
This course covers all aspects of the software development process from initial specification to final validation of completed software design. Implementation methodologies are discussed in the context of a major team project, to be chosen according to student and instructor interest. Oral presentations by students are an important part of the course. More Info
Offered in:CS 411 Competitive Programming +
Description:
This is an undergraduate course on time-constrained problem solving in computing. Intended for students who want to excel in programming, this course covers a core set of algorithms, programming techniques, and computing background information that are useful for recognizing, understanding, and solving programming challenges in a time-constrained environment. More Info
Offered in:- TBA
CS 413 Applied Cryptography +
Description:
This course aims to introduce fundamental and practical knowledge of cryptography and its applications. This course covers diverse topics on cryptography and network security techniques including conventional encryption, asymmetric and symmetric cryptology, digital signatures, certificates, key exchange, key management, authentication, network access control, cloud computing security, electronic mail security, advanced crypto primitives, bitcoin, blockchain, and differential privacy. This course focuses on both theoretical aspects and practical applications of cryptanalysis and network security techniques. More Info
Offered in:CS 414 BLOCKCHAIN TECHNOLOGY +
Description:
Blockchain enables a digital decentralized society where people can contribute, collaborate, and transact withouthaving to second-guess trust and transparency. It is the technology behind the success of Bitcoin, Ethereum, andmany disruptive applications and platforms that have impact in numerous sectors, including finance, education,health care, environment, transportation, and philanthropy, to name a few. This course covers a basic set ofessential concepts, algorithms, and tools suitable for aspiring students who want to be technologically ready for ablockchain venture. Topics touch various issues in decentralized computing and networking. Students will learnprogramming skills sufficiently to develop a blockchain project from scratch. More Info
Offered in:- TBA
CS 420 An Introduction to the Theory of Computation +
Description:
This course introduces such theoretical aspects of computing as models of computation, inherent limits on computation, and feasible computation. Topics include definition of computable functions (recursive functions, functions computable by Turing machines, functions computable in a programming language), unsolvability of the halting problem and related problems, the classes P and NP, finite automata, and context-free grammars. More Info
Offered in:CS 430 Database Management +
Description:
Introduction to database systems, including database programming. The course covers relational algebra, SQL, object-relational systems, embedded programming, and basic transaction concepts. It covers database design, both entity-relationship modeling and normalization. More Info
Offered in:CS 435 Recommender Systems +
Description:
This course covers the basic concepts of recommender systems, including personalization algorithms, evaluation tools, and user experiences. We will discuss how recommender systems are deployed in e-commerce sites, social networks, and many other online systems. More Info
Offered in:- TBA
CS 436 Database Application Development +
Description:
A study of database applications, that is, software systems that solve a particular real-world problem and hold their data in a relational database. The systems under study will also have a realistic user interface. Students will work in small groups on a real-world project specified and implemented during the term. Topics include system specification from user needs, analysis of dataflow and workflow, object design, database design, and client-server techniques. More Info
Offered in:CS 437 Database-Backed Web Sites & Web Services +
Description:
Today, much programming is web-based. Web based programs serve up information from a Web site in a form that can be either read by a browser or processed by another program. This course introduces the student to the design and implementation of such web-based programs. More Info
Offered in:CS 438 Applied Machine Learning +
Description:
This course presents the practical side of machine learning for applications, such as pattern recognition from images or building predictive classifiers. Topics will include linear models for regression, decision trees, rule based classification, support vector machines, Bayesian networks, and clustering. The emphasis of the course will be on the hands-on application of machine learning to a variety of problems. More Info
Offered in:CS 442 Cybersecurity in the Internet of Things +
Description:
This course aims to introduce the concept of IoT and its impact on our daily lives, to understand the architecture and components of IoT, and to address the challenges and solutions of deploying IoT in reality. Students will learn how to make design trade-offs between communication and computations costs and between hardware and software. In addition, cybersecurity is a critical design issue of the IoT system. From this course, students will become aware of the cybersecurity issues raised by IoT and gain the knowledge of related security techniques. Students will also gain hands-on experiences on building IoT devices and implementing security techniques through team projects. More Info
Offered in:CS 443 Mobile Applications +
Description:
Mobile devices are becoming ubiquitous along with the high demand for mobile applications serving corporations and millions of end-users. In this course, students will learn programming skills for developing mobile applications on the Android platform, which is the fastest growing mobile operating system. Android is open source and includes many libraries that can help developers easily implement rich and complex applications. Students in this course will learn how to create, test,and deploy Android applications. More Info
Offered in:- TBA
CS 444 An Introduction to Operating Systems +
Description:
Description of current operating systems, with focus on one or two in particular. Topics include defining the operating system as distinct from the hardware on one side and software systems on the other; process concepts; memory management; CPU scheduling; device management; file systems; network support. More Info
Offered in:CS 446 Introduction to Internetworking +
Description:
The objective of this course is to provide a practical understanding of computer networks, with emphasis on the Internet. The course starts with an overview of the Internet, its protocol layers, edge and core networks, access networks and physical media. The course then focuses on fundamental design and implementation concepts of the application, transport, and network layers of the Internet. More Info
Offered in:CS 449 Introduction to Computer Security +
Description:
The course will provide an introduction to the fundamentals of computer security, and will cover both general theoretical aspects as well as applied methods of computer security. The course will address the general concepts of confidentiality, integrity and availability of digital information, and will focus on aspects such as: risks and vulnerabilities; models and policies for access control; program security - buffer overflow attacks, malware, viruses; browser security; authentication and authorization; encryption; and an overview of applied data, operating system and network security (with emphasis on Internet security). The course will also address the aspect of privacy, which is tightly related to security and is becoming increasingly important in today's digital society. More Info
Offered in:CS 450 The Structure of Higher Level Languages +
Description:
The syntax and semantics of higher level languages. Mechanisms for parsing, parameter passing, scoping, dynamic storage allocation, and message passing are modeled by programs written in a suitably high-level language. More Info
Offered in:CS 451 Compilers +
Description:
This course is an introduction to compiler organization and implementation, including formal specifications and algorithms for lexical and syntactic analysis, internal representation of the source program, semantic analysis, run-time environment issues, and code generation. Participants write a compiler for a reasonably large subset of a contemporary language, targeted to a virtual machine. More Info
Offered in:CS 460 Graphics +
Description:
After completing this course, you will be able to develop rich and interactive web-based 3D visualizations for computers, smartphones, and tablets. By using WebGL, you will learn to create immersive and high-quality graphics, including 3D geometric transformations, camera transformations, the image-rendering process, as well as materials and texture mapping. This course also includes advanced topics such as color representations, light simulation, dealing with geometries, and creating animations. And since everything runs in the browser, you can show your work to your friends with a link to a website. More Info
Offered in:CS 461 Computer Games Programming +
Description:
This course covers the game development pipeline, from modeling of virtual environmental and gaming assets, to interactive rendering and real-time physics-based simulation in virtual environments. The syllabus i centered on the essential components of a game engine. Special technical issues in game development will also be discussed, such as real-time interactivity, scalability of modeling techniques and the use of the standard techniques adopted in common game engines. Students also need to team up to develop their own games using a game engine. The goal of this course is to prepare students for a career as a game developer. More Info
Offered in:CS 470 An Introduction to Artificial Intelligence +
Description:
An introduction to the main techniques of Artificial Intelligence: state-space search methods, semantic networks, theorem-proving and production rule systems. Important applications of these techniques are presented. Students are expected to write programs exemplifying some of techniques taught, using the LISP language. More Info
Offered in:CS 478 Independent Study +
Description:
Work done by a student or group of students under faculty supervision on material not currently offered in a regularly scheduled course. Students wishing to undertake such work must first find a faculty member willing to supervise it; the work to be completed must be approved by the department chairperson. More Info
Offered in:CS 480 Special Topics +
Description:
An advanced course offering intensive study of selected topics in computer science. Course content varies and will be announced prior to registration. More Info
Offered in:CS 495 Practicum in Computer Science +
Description:
This course is intended to enhance academic studies by providing an industrial context for learning new concepts and skills. It will help to prepare the student for the transition from an academic program to eventual employment in the computer industry. More Info
Offered in:CS 498 Honors Thesis +
Description:
The design and execution of a significant research project under the guidance of a faculty advisor. Successful completion and oral defense of the thesis is necessary to qualify for Honors in Computer Science. More Info
Offered in: