CS - Computer Science

CS 110 Computer Science and the Internet

This course explains the basics of how the Internet works and how to build a website. Topics include client-server architecture, structuring webpages with HTML, CSS, and JavaScript, the representation of colors, images, and sound on the computer, encryption, cookies, and CGI forms. We also discuss accessibility, copyright, intellectual property, and critical thinking in the context of the Internet. The required project models most phases of the standard software lifecycle. Students are introduced to programming by building an interactive website using JavaScript. Students are required to attend an additional 70-minute discussion section each week.

Instructor

Anderson, Hildreth

Prerequisites

None. No prior background with computers is expected.

Unit(s)

1.0

Semesters Offered

Fall, Spring

Degree Requirements

MM

CS 111 Computer Programming and Problem Solving

An introduction to problem solving through computer programming. Using the Java programming language, students learn how to read, modify, design, debug, and test algorithms that solve problems. Programming concepts include control structures, data structures, abstraction, recursion, modularity, and object-oriented design. Students explore these concepts in the context of interactive programs involving graphics and user interfaces. Students are required to attend an additional two-hour laboratory section each week. Required for students who wish to major or minor in computer science or elect more advanced courses in the field.

Instructor

Shull, Tjaden, Turbak

Prerequisites

None. No prior background with computers is expected.

Unit(s)

1.0

Semesters Offered

Fall, Spring

Degree Requirements

MM

CS 112 Computation for the Sciences

An introduction to computer programming that provides the tools necessary for students to use computers effectively in scientific work, including physical sciences, biological sciences, medicine, mathematics, psychology and economics. Students learn to write software to solve problems, visualize and analyze data, perform computer simulations, and implement and test computational models that arise in a wide range of scientific disciplines. The course introduces MATLAB, an extensive and widely used technical computing environment with advanced graphics, visualization and analysis tools, and a rich high-level programming language. Students are required to attend an additional two-hour laboratory section each week.

Instructor

Hildreth

Prerequisites

None. No prior background with computers is expected.

Unit(s)

1.0

Semesters Offered

Spring

Degree Requirements

MM

CS 114 The Socio-Technological Web

As more and more people use the technologies and services made available from computer science, online environments like Facebook, Second Life, MySpace, Wikipedia, blogs, and open source development communities, have been flourishing. It is becoming clear that problems existing in our real world transfer and become amplified in the virtual world created by our interconnectivity. This course will start by studying the structure of the traditional Web and its recent successor, the Social Web, and will focus on issues of virtual identity, personal and group privacy, trust evaluation and propagation, online security, critical thinking, online propaganda, googlearchy, fraud and manipulation, restricted resources, class differences, self-perception, and decision-making. Students are required to attend an additional 70-minute discussion section each week.

Instructor

Metaxas

Prerequisites

None

Unit(s)

1.0

Semesters Offered

Fall

Degree Requirements

MM

CS 117 Inventing Mobile Apps

This course teaches how to create apps for mobile devices as a vehicle for learning big ideas of computer science, engineering, and entrepreneurship and explore technology's impact on society. Applications include games, quizzes, electronic voting, location-aware apps, social networking, and apps that communicate with web services. All apps will be created on Android phones using App Inventor, a visual programming environment that does not require previous programming experience. The course culminates in a project where students design and implement new mobile apps for clients. Students are required to attend an additional 70-minute laboratory section each week.

Instructor

Turbak

Prerequisites

None. Does not fulfill the laboratory requirement.

Unit(s)

1.0

Semesters Offered

Not Offered

Degree Requirements

MM

CS 118 First-year Seminar: Creative Computing

We are all consumers of technology, but it is more empowering to be designers and inventors. This seminar explores the computer as a creative medium for designing and building applications that students find useful and personally meaningful. Using the Python programming language, students will learn to create from scratch simple computer programs that involve graphics, user interfaces, data analysis and visualization, communication with web services, generation of webpages, and sharing with others via databases in the cloud. Fundamental computational thinking concepts and programming techniques will be introduced through hands-on activities in class and used in assignments and student-designed projects.

Instructor

Turbak

Prerequisites

Open to first-year students only. No prior programming background is expected. Not open to students who have taken CS 111

Unit(s)

1.0

Semesters Offered

Spring

Degree Requirements

MM

CS 215 Multimedia Design and Programming

The purpose of this course is to give students a broad foundation in issues related to creating multimedia and hypermedia applications. Topics to be covered include history and philosophy of hypermedia; principles of human-computer interaction; multimedia programming; optimizing for CD-ROMs and the World Wide Web; digital representation and editing of media (audio, graphics, video); media compression and transmission; and delivery of multimedia applications. Students are required to attend an additional 70-minute laboratory section each week.

Instructor

Metaxas

Prerequisites

At least CS 111 (preferred) or CS 110 is required. At least one of ARTS 105, ARTS 108/CAMS 138, or ARTS 109/CAMS 139 [2010-11] is recommended.

Unit(s)

1.0

Semesters Offered

Spring

Degree Requirements

MM

CS 220 Human-Computer Interaction

Human-Computer Interaction is one of the areas that have transformed the way we use computers in the last 30 years. Topics include methodology for designing and testing user interfaces, interaction styles (command line, menus, graphical user interfaces, virtual reality, tangible user interfaces), interaction techniques (including use of voice, gesture, eye movements), design guidelines, and user interface software tools. Students will design a user interface, program a prototype, and test the results for usability. Students are required to attend an additional 70-minute discussion section each week.

Instructor

Shaer

Prerequisites

One of: CS 110, CS 111, CS 112, CS 117

Unit(s)

1.0

Semesters Offered

Not Offered

Degree Requirements

MM

CS 230 Data Structures

An introduction to techniques and building blocks for organizing large programs. Topics include: modules, abstract data types, recursion, algorithmic efficiency, and the use and implementation of standard data structures and algorithms, such as lists, trees, graphs, stacks, queues, priority queues, tables, sorting, and searching. Students become familiar with these concepts through weekly programming assignments using the Java programming language. Students are required to attend an additional two-hour laboratory section each week.

Instructor

Metaxas, Tjaden

Prerequisites

CS 111 or permission of the instructor. Students who received a grade of C+ or lower in 111 must contact the instructor before enrolling.

Unit(s)

1.0

Semesters Offered

Fall, Spring

Degree Requirements

MM

CS 231 Fundamental Algorithms

An introduction to the design and analysis of fundamental algorithms. General techniques covered: divide-and-conquer algorithms, dynamic programming, greediness, probabilistic algorithms. Topics include: sorting, searching, graph algorithms, compression, cryptography, computational geometry, and NP-completeness.

Instructor

Tjaden

Prerequisites

CS 230 and either MATH 225 or permission of the instructor.

Unit(s)

1.0

Semesters Offered

Spring

Degree Requirements

MM

CS 232 Artificial Intelligence

An introduction to artificial intelligence (AI), the design of computer systems that possess and acquire knowledge and can reason with that knowledge. Topics include knowledge representation, problem solving and search, planning, vision, language comprehension and production, learning, common sense reasoning, and expert systems. To attain a realistic and concrete understanding of these problems, the Python programming language will be taught and used to implement the algorithms of the course.

Instructor

Mustafaraj

Prerequisites

CS 230 or by permission of the instructor.

Unit(s)

1.0

Semesters Offered

Fall

Degree Requirements

MM

CS 235 Languages and Automata

This course offers an introduction to the concepts of languages and automata. Topics include languages, regular expressions, finite automata, grammars, pushdown automata, and Turing machines. The first half of the semester covers the Chomsky hierarchy of languages and their associated computational models. The second half of the semester focuses on decidability issues and unsolvable problems and the course closes with a brief introduction to complexity theory. The course includes a programming component investigating the application of automata theory to the scanning and parsing of programming languages.

Instructor

Turbak

Prerequisites

CS 230 and either MATH 225 or permission of the instructor.

Unit(s)

1.0

Semesters Offered

Fall

Degree Requirements

MM

CS 240 Introduction to Machine Organization with Laboratory

This course is intended to demystify the computer (open up the "black box") and teach how information at the highest level is processed and ultimately executed by the underlying circuitry. To this end, the course provides an introduction to machine organization and assembly language programming. Specific topics include the fundamentals of computer organization (introduction to numeric representation, Boolean logic, digital logic and all associated technology), a basic data path implementation, assembly language programming, how to assess and understand the performance of a computer, and brief overviews of assemblers, compilers and operating systems. Students are required to attend one three-hour laboratory weekly.

Instructor

Shull

Prerequisites

CS 111 or CS 112

Unit(s)

1.25

Semesters Offered

Fall

Degree Requirements

MM

CS 242 Computer Networks

A systems-oriented approach to data networks, including a theoretical discussion of common networking problems and an examination of modern networks and protocols. Topics include point-to-point links, packet switching, internet protocols, end-to-end protocols, congestion control, and security. Projects may include client-server applications and network measurement tools.

Instructor

Shull

Prerequisites

CS 230 or permission of the instructor.

Unit(s)

1.0

Semesters Offered

Not Offered

Degree Requirements

MM

CS 249 Topics in Computer Science

Topic for 2012-13: Web Mashups

On the web, your friends are on Facebook, the music you like on Pandora, the instructional videos on YouTube, the places to visit on Google Maps. Is there a way to bring these contents into one single website? Yes, and it is called a web mashup, a new kind of website created by combining together data and services from different websites. These websites (such as Google Maps) allow access through an API (application programming interface), and one can combine their contents in innovative and inspiring ways. Students in this course will build as a final project a web mashup that provides an informational, societal, or entertainment value not available in existing websites, by learning the latest, cross-platform technologies such as HTML5, jQuery, Ajax, and Google App Engine.

Instructor

Mustafaraj

Prerequisites

CS 111 or permission of the instructor

Unit(s)

1.0

Semesters Offered

Spring

Degree Requirements

MM

CS 250 Research or Individual Study

Prerequisites

CS 230 or permission of the instructor.

Unit(s)

1.0

Semesters Offered

Fall, Spring

Degree Requirements

None

CS 250H Research or Individual Study

Prerequisites

CS 230 or permission of the instructor.

Unit(s)

0.5

Semesters Offered

Fall, Spring

Degree Requirements

None

CS 251 Theory of Programming Languages

This course offers an introduction to the dimensions of modern programming languages. Covers major programming paradigms: function-oriented, imperative, object-oriented, and logic-oriented. Dimensions include syntax, naming, state, data, control, concurrency, nondeterminism, and types. These dimensions are explored via mini-language interpreters written in OCaml, Scheme, and Haskell that students experiment with and extend.

Instructor

Shull

Prerequisites

CS 230

Unit(s)

1.0

Semesters Offered

Spring

Degree Requirements

MM

CS 304 Databases with Web Interfaces

A study of the three-layer architecture commonly used for Web-based applications such as e-commerce sites. We will learn to model and design databases uses entity-relationship diagrams, and the Standard Query Language (SQL) for managing databases. We will learn PHP, CGI/Python, and Java Servlets, which are three important technologies for web-based architectures. We will also discuss performance, reliability and security issues. Finally, we will create dynamic websites driven by database entries.

Instructor

Anderson

Prerequisites

CS 230

Unit(s)

1.0

Semesters Offered

Fall

Degree Requirements

MM

CS 307 Computer Graphics

A survey of topics in computer graphics with an emphasis on fundamental techniques. Topics include: graphics hardware, fundamentals of three-dimensional graphics including modeling, projection, coordinate transformation, synthetic camera specification, color, lighting, shading, hidden surface removal, animation, and texture-mapping. We also cover the mathematical representation and programming specification of lines, planes, curves, and surfaces.

Instructor

Anderson

Prerequisites

CS 230

Unit(s)

1.0

Semesters Offered

Not Offered

Degree Requirements

MM

CS 310 Foundations of Cryptology

When is a cryptographic system secure and how will we ever know? This course introduces the computational models and theory computer scientists use to address these issues. Topics include one-way functions, trapdoor functions, probabilistic complexity classes, pseudorandom generators, interactive proof systems, zero-knowledge proofs, and the application of these theories to modern cryptology.

Instructor

Shull

Prerequisites

CS 231 or CS 235 or permission of the instructor.

Unit(s)

1.0

Semesters Offered

Spring

Degree Requirements

MM

CS 313 Computational Biology

Many elegant computational problems arise naturally in the modern study of molecular biology. This course is an introduction to the design, implementation, and analysis of algorithms with applications in genomics. Topics include bioinformatic algorithms for dynamic programming, tree-building, clustering, hidden Markov models, expectation maximization, Gibbs sampling, and stochastic context-free grammars. Topics will be studied in the context of analyzing DNA sequences and other sources of biological data. Applications include sequence alignment, gene-finding, structure prediction, motif and pattern searches, and phylogenetic inference. Course projects will involve significant computer programming in Java. No biology background is expected.

Instructor

Tjaden

Prerequisites

CS 230

Unit(s)

1.0

Semesters Offered

Not Offered

Degree Requirements

MM

CS 315 Web Search and Mining

In the last decade we have experienced an explosive growth of information through the web. Locating information seems to be very easy, while determining the quality of information can be tricky. This course is for students who want to know why search engines can answer your queries fast and (most of the time) accurately, why other times seem to be missing the point and provide untrustworthy information, and how one can design a Web site that acquires high visibility on the Web. We will cover traditional information retrieval methods and web search algorithms such as crawlers and spiders, with a focus on probabilistic and graph-theoretic methods that can detect Web spam. We will also cover some basic understanding of text mining and data clustering. Time permitting, we will examine other relevant issues of the information explosion era, such as the shape and structure of the Web, epistemology of information and properties of large random networks.

Instructor

Metaxas

Prerequisites

CS 230. Not open to students who have taken this topic as CS 349.

Unit(s)

1.0

Semesters Offered

Spring

Degree Requirements

MM

CS 320 Tangible User Interfaces

Tangible user interfaces emerge as a novel human-computer interaction style that interlinks the physical and digital worlds. Extending beyond the limitations of the computer mouse, keyboard and monitor, tangible user interfaces allow users to take advantage of their natural spatial skills while supporting collaborative work. Students will be introduced to conceptual frameworks, the latest research, and a variety of techniques for designing and building these interfaces. Developing tangible interfaces requires creativity as well as an interdisciplinary perspective. Hence, students will work in teams to design, prototype and physically build tangible user interfaces.

Instructor

Shaer

Prerequisites

CS 220 or CS 215 or CS 230, or permission of instructor. Not open to students who have taken this course as a topic of CS 349.

Unit(s)

1.0

Semesters Offered

Not Offered

Degree Requirements

MM

CS 332 Visual Processing by Computer and Biological Vision Systems

This course explores models for deriving information about the three-dimensional world from visual images. We examine methods used in computer vision systems to analyze digital images and strategies used by biological vision systems to interpret the retinal image. An interdisciplinary approach that combines computer science, psychology and neuroscience, and contributes to the design of effective computer vision systems and the understanding of human visual processing. Topics include: edge detection, stereo vision, motion analysis, shape from shading, color, object recognition, and image processing applications in medicine, security, information retrieval and intelligent vehicles. The course uses vision software written in MATLAB. Students are required to attend an additional 70-minute discussion section each week.

Instructor

Hildreth

Prerequisites

CS 112 or CS 230 or permission of the instructor.

Unit(s)

1.0

Semesters Offered

Not Offered

Degree Requirements

MM

CS 342 Computer Security

An introduction to computer security. Topics include ethics, privacy, authentication, access control, information flow, operating system security (with a focus on Linux), cryptography, security protocols, intrusion prevention and detection, firewalls, viruses, network security, Web security, programming language security. Assignments include hands-on exercises with security exploits and tools in a Linux environment. Participants will independently research, present, and lead discussions on security-related topics. Students are required to attend an additional 70-minute discussion section each week. 

Instructor

Turbak

Prerequisites

CS 230 and CS 240 or permission of the instructor. CS 242 recommended.

Unit(s)

1.0

Semesters Offered

Fall

Degree Requirements

MM

CS 349 Advanced Topics in Computer Science

Prerequisites

TBD

Unit(s)

1.0

Semesters Offered

Not Offered

Degree Requirements

MM

CS 350 Research or Individual Study

Prerequisites

Permission of the instructor. Open to juniors and seniors.

Unit(s)

1.0

Semesters Offered

Fall, Spring

Degree Requirements

None

CS 350H Research or Individual Study

Prerequisites

Permission of the instructor.

Unit(s)

0.5

Semesters Offered

Fall, Spring

Degree Requirements

None

CS 360 Senior Thesis Research

Prerequisites

Permission of the department.

Unit(s)

1.0

Semesters Offered

Fall, Spring

Degree Requirements

None

CS 370 Senior Thesis

Prerequisites

CS 360 and permission of the department.

Unit(s)

1.0

Semesters Offered

Fall, Spring

Degree Requirements

None
RELATED

Departments and Programs