Undergraduate classes, Fall 2009, Computer Science
Note: All courses taken towards the major or minor must be taken on a letter grade basis, not pass/fail.
|CS 110: Computer Science Fundamentals||Credits: 4||− Description||− Sections|
Content: The course will provide a basic understanding of the principles underlying computer systems and software. Topics include an overview of computer hardware, the design of algorithms and their role in problem solving, and programming in a high level language. Databases, networking and the world-wide web, and contemporary issues in information technology will also be discussed.
|000||Psych 290||TuTh 11:30am - 12:45pm||Vaidy Sunderam||max 100|
|CS 155: Computer Science with Business Applications||Credits: 4||− Description||− Sections|
Content: This course covers tools and concepts of computer science that are most relevant to business (enterprise) computing and e-commerce, emphasizing the common 3-tier website model. Students will be introduced to basic programming principles, page layout and visual interface design, client/server computing, and simple techniques for accessing databases. Algorithmic and mathematical foundations of fundamental e-commerce techniques such as search engines, recommendation and reputation management systems, and online auctions will be studied. Teams of students will explore existing websites and design and implement extensions to a code framework. No background in computing is necessary but students with background are welcomed.
|000||MSC: W303||MWF 2:00pm - 2:50pm||Phil Hutto||max 25|
|LAB||MSC: E308A||Th 4:00pm - 5:00pm||Phil Hutto||max 25|
|CS 170: Introduction to Computer Science I||Credits: 4||− Description||− Sections|
Content: This course is an introduction to computer science for the student who expects to make serious use of the computer in course work or research. Topics include: fundamental computing concepts, general programming principles, the Unix Operating System, the X-window system, and the Java programming language. Emphasis will be on algorithm development with examples highlighting topics in data structures.
|000||MSC: W303||TuTh 11:30am - 12:45pm||Eugene Agichtein||max 32|
|001||MSC: W301||MWF 12:50pm - 1:40pm||Sebastien Siva||max 32|
|Lab1||MSC: E308A||Tu 4:00pm - 4:50pm||Eugene Agichtein||max 28|
|Lab2||MSC: E308A||W 4:00pm - 4:50pm||Sebastien Siva||max 30|
|CS 171: Introduction to Computer Science II||Credits: 4||− Description||− Sections|
Content: A continuation of CS170. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object oriented design and programming with Java. The course will also introduce the basics of procedural programming with C.
|000||MSC: W306||TuTh 11:30am - 12:45pm||Michelangelo Grigni||max 25|
|CS 190: Freshman Seminar: Robots||Credits: 4||− Description||− Sections|
Content: Computers are ubiquitous and take a variety of interesting forms such as robots, mobile phones, electronic music players, biomedical devices, and toys. This course provides an introduction to Computer Science by programming and exploring such embedded computers in the form of robots designed using the Lego Mindstorms NXT package. Assignments will primarily consist of weekly labs in which students will program a robot to compete with other students on or perform a given task. Although the course is self-contained and will explore various topics, the primary focus will be no designing and implementing programs, and a strong interest in learning programming or experience in programming will be quite useful.
Texts: mostly electronic resources
Assessments: readings and labs
|000||MSC: E308A||TuTh 1:00pm - 2:15pm||Ojas Parekh||max 16|
|CS 224: Mathematical Foundations of Computer Science||Credits: 4||− Description||− Sections|
Content: This course introduces elementary mathematics necessary for the computer science curriculum. Topics include functions, boolean logic, quantifiers, automata, languages, asymptotic notation, and reasoning about programs.
Prerequisites: Math 112 (or 112s or 112Z). Corequisite: CS 170.
|000||MSC: E408||MWF 12:50pm - 1:40pm||James Gardner||max 15|
|CS 255: Computer Organization and Architecture I||Credits: 4||− Description||− Sections|
Content: This is the first course in computer organization and architecture and is designed to introduce the student to computer organization, architecture. The hardware components of computer systems and their interconnections will be studied at a level suitable for assembly programming. The architecture of the M68000 and SPARC computers and their assembly languages will be covered in detail.
Prerequisites: CS 171.
|000||MSC: E406||MWF 11:45am - 12:35pm||Phil Hutto||max 16|
|CS 377: Database Systems||Credits: 4||− Description||− Sections|
Content: (Formerly CS 457). Prerequisite: Computer Science 171. Introduction to storage hierarchies, database
models, consistency, reliability, and security issues. Query languages and their implementations,
efficiency considerations, and compression and encoding techniques.
Prerequisites: CS 171
|000||MSC: W303||TuTh 10:00am - 11:15am||Shun Yan Cheung||max 25|
|CS 450: Systems Programming||Credits: 4||− Description||− Sections|
Content: (Formerly CS 351). Systems programming topics will be illustrated by use of the Unix operating system. Topics include: file i/o, the tty driver, window systems, processes, shared memory, message passing, semaphores, signals, and interrupt handlers.
Programming examples and assignments will illustrate the system interface on actual computer hardware. All assignments will be in written in C. The department's computing lab will be used in the course to allow students to get hands-on experience with operating system and hardware topics that cannot effectively be pursued on a central timesharing computer.
Prerequisites: CS 171 and CS 255.
|000||MSC: W301||TuTh 11:30am - 12:45pm||Ken Mandelberg||max 25|
|CS 456: Compiler Construction||Credits: 4||− Description||− Sections|
Content: An introduction to the algorithms and data structures used to construct a high level language compiler. Topics include: formal language specification, lexical analysis, parsing, and code generation.
Prerequisites: CS 253, CS 255, and CS 424, or their equivalents.
|000||MSC: W301||MW 3:00pm - 4:15pm||James Lu||max 25|
|CS 485: Topics in Computer Science: Fund. of Genome Bioinformatics||Credits: 4||− Description||− Sections|
Content: (Same as BIOL 470 003).
As modern biomedical research has become more and more data intensive, computational and statistical approaches have become crucially important. This course will cover fundamental methods used in the analysis of genomic sequence data. We will examine core algorithmic ideas relevant to sequence analysis: greedy approaches, dynamic programming, pattern matching, and graphical models. Much of our focus will be on the application of these ideas to problem areas such as genome assembly and alignment, phylogenetic and evolutionary modeling, and identification of functional elements in genomes (genes, regulatory motifs, et cetera).
Texts: Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids (Durbin, Eddy, et al).
Assessments: This course will be accessible both to Biology majors with no computational background and Computer Science majors with no biology background. A substantial portion of this course will involve student projects applying the techniques learned to real biological problems, which students will work on in interdisciplinary teams combining both Biologists and Computer Scientists.
Prerequisites: CS 171.
|000||MSC: W302||TuTh 2:30pm - 3:45pm||James Taylor||max 10|
|CS 485: Topics in Computer Science: Software Engineering||Credits: 4||− Description||− Sections|
Content: Software engineering as a discipline has evolved in conjunction with computer hardware and programming tools. Despite its infancy, SW Engineering has some fundamental processes that are recognized as essential to the production of quality software that meets customer requirements. Both the ACM (as "SE2004") and the IEEE (as "Software Engineering Body of Knowledge" or "SWEBOK") have defined a set of skills that practitioners of software development should possess. These include Requirements, Design, Construction, Testing, Quality Control, and Configuration Management. This course seeks to teach principles of software engineering through hands-on experience in a series of projects. In addition, the student will be introduced to applied concepts in software engineering through the blogs and writings of some of today's most noted practitioners.
Texts: Much of the material used in the course is available on the web. Software Engineering by Ivan Marsic (free pdf download available here: http://www.caip.rutgers.edu/~marsic/books/SE/book-SE_marsic.pdf) will serve as the primary text.
Assessments: 25% exams (10% mid-term, 15% final); 30% projects; 25% homework; 20% presentations.
There will be 3 projects (at 10% each) assigned during the semester. The goal is to help the student become familiar with the phases of software development through multiple iterations. The student will also become more adept at rapid prototyping and the trade-offs needed to meet deadlines while conforming to requirements specifications.
Students will provide a brief (10-minute) presentation on each project (5% each for the first 2 projects and 10% for the last one).
There will be 5 readings assigned during the semester. Students will provide a report on each paper, at a value of 5% each of the course grade, consisting of (a)content summary; (b) arguments in favor of the paper's thesis; (c) arguments against the paper's thesis; (d) the student's opinion -- pro or con -- with supporting rationale. There is no absolute right or wrong opinion, but the student's views must include rational supporting discussion.
Prerequisites: Senior standing, Graduate student, or permission from the instructor. The student should be familiar with at least one language used in web software development.
|001||MSC: W306||TuTh 4:00pm - 5:15pm||Joan Smith||max 25|
|CS 497R: Undergraduate Directed Study||Credits: 1 - 4||− Description||− Sections|
Content: Credit, one to four hours, as arranged with the department.