Course Schedule

Undergraduate Course Catalog (2003-2005)

50:198:110 Introduction to Computing (3)

Prerequisite: Satisfy mathematics requirement for admission to the colleges.

Introduction to computers and information technology, with an emphasis on personal computers and their applications. Understanding of and hands-on experience with application software including word processors, spreadsheets, database systems, electronic mail, and web browsers. Introductory problem solving and computer programming.

50:198:111 Introduction to Computer Science (3)

Corequisites: 50:640:121 or 129 or 130; 50:198:112.

Remark: Formerly 50:198:152 Introduction to Programming Using C.

The first course for computer science majors. Basic concepts of computing, fundamental problem-solving techniques, and principles of structured programming. Programming in a modern high-level language (such as C/C++ or Java). This course must be taken concurrently with 50:198:112 Software Laboratory I.

50:198:112 Software Laboratory I (1)

Corequisite: 50:198:111.

Formal laboratory that provides practical programming experience based on the lecture material of 50:198:111. Introduction to the Unix system, including the file system, programming tools such as editors, compilers, and debuggers, libraries, and other utilities.

50:198:113 Programming with Data Structures (3)

Prerequisites: 50:198:111; 50:640:121 or 129 or 130.

Corequisite: 50:198:114.

Remark: Formerly 50:198:228 Data Structures.

Abstract data types and elementary data structures, including stacks, queues, linked lists, tree-based structures, and hash tables. Algorithmic analysis, recursion, and basic algorithms. Programming assignments in a high-level language (such as C/C++ or Java). This course must be taken concurrently with 50:198:112 Software Laboratory II.

50:198:114 Software Laboratory II (1)

Prerequisite: 50:198:112.

Corequisite: 50:198:113.

Formal laboratory that provides practical programming experience based on the lecture material of 50:198:113. Introduction to Unix systems programming, Unix systems calls, shell scripts, and graphical user interface (GUI) libraries and tools.

50:198:151 Introduction to Programming Methods Using FORTRAN (3)

Corequisite: 50:640:121 or 130.

Intended for science and engineering majors. Basic problem-solving and programming techniques, basic data structures, and fundamental numerical algorithms. Programming in FORTRAN.

50:198:221 Programming Language Concepts (3)

Prerequisite: 50:198:113.

Design issues relevant to the implementation of programming languages: sequence control, data control, type checking, run-time storage management, language translation, and semantics. Comparison of major programming paradigms: procedural, functional, logic, and object-oriented. Language features which support parallel and distributed computing. Introduction to the relational data model and relational database query languages.

50:198:231 Computer Organization and Assembly Language Programming (3)

Prerequisite: 50:198:111.

Remark:Formerly 50:198:211 Introduction to Computer Architecture and Assembly Language Programming.

Machine representation of data and instructions, instruction set architecture, memory organization, input/output, and interrupt processing. Assembly language and machine language, relation to high-level language, and operating system interface. Assembly language programming, including subroutine construction, macros, debugging, linking, and loading.

50:198:271 Design and Analysis of Algorithms (3)

Prerequisites: 50:198:113 and 50:640:237.

Remark: Formerly 50:198:344 Design and Analysis of Algorithms.

Algorithm design techniques: divide-and-conquer, greedy method, dynamic programming, backtracking, and branch-and-bound. Advanced data structures, graph algorithms, algebraic algorithms. Complexity analysis , complexity classes, and NP-completeness. Introduction to approximation algorithms and parallel algorithms.

50:198:316 Parallel Programming (3)

Prerequisite: 50:198:113, or advanced programming experience and permission of instructor.

Fundamental issues in the design and development of parallel programs for various types of parallel computers. Various programming models according to both machine type and application area. Cost models, debugging, and performance evaluation of parallel programs with actual application examples. Programming techniques and optimization. Programming exercises on a contemporary parallel machine.

50:198:323 Software Methodology and Engineering (3)

Prerequisite: 50:198:221.

Remark: Formerly 50:198:345 Software Engineering Using Ada.

Principles and techniques for the design and construction of reliable, maintainable, and useful software systems. Software life cycle, requirements specifications, and verification and validation issues. Implementation strategies (e.g., top-down, bottom-up, teams), support for reuse, performance improvement. A treatment of human factors and user interfaces is included.

50:198:325 Java Applications (3)

Prerequisites: 50:198:113 and 50:198:231

Note: Credit cannot be obtained for both this course and "Special Topics: Advanced Java" (50:198:491,492).

Java class hierarchy, inheritance; applications and applets; graphical user interfaces, exception handling, input/output; multi-threading, multimedia, networking.

50:198:333 Computer Hardware and Interfacing (3)

Prerequisites: 50:198:231 and 50:640:237..

Corequisite:50:198:334.

Remark: Cross-listed as 50:750:308 Computer Hardware and Interfacing.

Introduction to digital logic, combinational circuits, sequential circuits. Introduction to microprocessor architecture and organization, operation and programming, interfacing and application of microprocessors.

50:198:334 Computer Hardware and Interfacing Laboratory (1)

Corequisite: 50:198:333.

Remark: Cross-listed as 50:750:312 Computer Hardware and Interfacing.

Formal laboratory accompanying 50:198:333. Provides hands-on experience in digital design using PLA/PLD devices, EEPROM, and MSI/LSI circuits, and interfacing of microprocessors to memory and peripherals.

50:198:341 Principles of Operating Systems (3)

Prerequisites: 50:198:113 and 50:198:231.

Remark: Formerly 50:198:416 Operating Systems.

Fundamental concepts of operating systems. Process management, memory management, device management, file systems, resource allocation, security and protection. Introduction to network and distributed operating systems.

50:198:346 Computer Networks (3)

Prerequisites: 50:198:113 and 50:198:231.

Remark: Formerly 50:198:341 Computer Communication Networks.

Introduction to computer communication networks, including physical and architectural components, communication protocols, switching, network routing, congestion control, and flow control. End-to-end transport services, network security and privacy. Networking software and applications. Network installation, testing, and maintenance.

50:198:347 Computer Systems Administration (3)

Prerequisites: 50:198:113 and 50:198:231.

Basic administration of networked computer systems (such as Unix and/or Windows NT systems). Installing and configuring the operating system, upgrading software and hardware, installing patches, system backups, security issues, account creation and deletion, system accounting and log files, job scheduling, performance monitoring, tcp/ip and networking, client/server file sharing and printing, file layout and organization, disk and tape administration and a look at several administrative tools.

50:198:351 Database Systems (3)

Prerequisite: 50:198:113.

Remark: Formerly 50:198:333 Database Systems.

Relational database theory and practice, including database design. Database concepts, relational algebra, data integrity, query languages, views. Introduction to object-oriented databases. Application project with a practical database management system.

50:198:356 Computer Graphics (3)

Prerequisite: 50:198:113.

Remark: Formerly 50:198:302 Computer Graphics.

Characteristics of graphics display devices and systems; representation, manipulation, and display of two- and three-dimensional objects; curve and surface modeling; two- and three-dimensional transformations; hidden lines and surfaces; shading and coloring; interactive graphics and user interfaces; animation techniques.

50:198:361 Artificial Intelligence (3)

Prerequisites: 50:198:113 and 50:640:237.

Remark: Formerly 50:198:451 Introduction to Artificial Intelligence.

Techniques and applications of artificial intelligence: search, rule-based reasoning, statistical reasoning, game playing, machine learning, knowledge representation. The use of heuristics to obtain satisfactory solutions to intractable problems.

50:198:376 Introduction to the Theory of Computation (3)

Prerequisite: 50:640:237.

Introduction to the theory of computability, including important results from the study of automata and formal languages. Automata and their relationship to regular, context-free and context-sensitive languages. General theories of computability, including Turing machines, recursive functions and lambda calculus. Notions of decidability and undecidability, complexity classes, and complexity analysis.

50:198:381 Introduction to Numerical Methods (3)

Prerequisites: 50:198:111 and 50:640:221.

Remark: Formerly 50:198:376 Introduction to Numerical Methods.

Methods of finding roots, interpolation, curve fitting, integration, differentiation, and minimization; estimation and control of various computational errors.

50:198:421 Compiler Construction (3)

Prerequisites: 50:198:221 and 50:198:231.

Remark: Formerly 50:198:407 Compiler Construction.

Introduction to compiler design and implementation, including lexical analysis, formal syntax specification, parsing techniques, syntax-directed translation, semantic analysis, execution environment, storage management, code generation, and optimization techniques.

50:198:426 Information Systems Analysis and Design (3)

Prerequisite: 50:198:351.

Remark: Formerly 50:198:409 Information Systems Design.

Overview of information systems, analysis of existing systems, requirements determination, design of information systems including interface, inputs, outputs, database. Group analysis and design project. Alternative development methodologies. Modern tools for analysis and design.

50:198:431 High-Performance Computer Architectures (3)

Prerequisites: 50:198:231 and 50:198:333.

Architecture of pipelined and superscalar processors, vector supercomputers, multiprocessors, parallel computers, multithreaded processors, and dataflow processors. System interconnect architectures, memory hierarchy design, and input/output subsystems. System design issues such as shared memory and message-passing communication models, cache coherence and synchronization mechanisms, latency-hiding techniques, virtual memory management, and task scheduling.

50:198:437 Signal Processing (3)

Prerequisites: 50:640:221 and 50:198:231

Remark: This course is cross-listed with 56:645:559 Signal Processing (3) offered in the M.S. program in Mathematics.

Signal modelling: periodic, stationary and Gaussian signals. System representation: Volterra representation, state space representation, simulation. Themes in system design: least square estimation, system identification, adaptive signal processing. Representation of discrete causal signals: role of Fourier analysis, convolutions, fast Fourier transforms. Realization of linear recurrent structures: controllability, observability and minimal realization, frequency domain analysis of signals and the role Laplace transforms. Stability analysis: Lyapunov and linearization methods. Prediction, filtering and identification: linear prediction, the LQR problem, Kalman filter.

50:198:441 Distributed Systems (3)

Prerequisite: 50:198:341.

Models of distributed systems, distributed algorithms and protocols, operating systems support, programming paradigms. Case studies of experimental and commercial systems.

50:198:458 Scientific Visualization (3)

Prerequisites: 50:198:113, 50:198:381, and 50:640:250.

Study of visualization techniques useful for the analysis and interpretation of scientific and engineering data. Topics include two- and three-dimensional data types, visual representation schemes for scalar, vector, and tensor data, isosurface and volume visualization methods, animation, and interactive manipulation of data.

50:198:473 Introduction to Computational Geometry (3)

Prerequisite: 50:198:271.

Algorithms and data structures for geometric problems that arise in various applications such as computer graphics, CAD/CAM, robotics, and geographical information systems (GIS). Topics include point location, range searching, intersection, decomposition of polygons, convex hulls, and Voronoi diagrams.

50:198:471 Advanced Algorithms (3)

Prerequisites: 50:198:271

Advanced and specialized topics in algorithms, selected from parallel algorithms, randomized algorithms, combinatorial optimization, or other.

50:198:475 Cryptography and Computer Security (3)

Prerequisites: 50:198:271

Secret-key cryptography, public-key cryptography, key agreement, secret sharing, digital signatures, message and user authentication, one-way functions, key management; attacks; practical applications to computer and communication security.

50:198:481 Advanced Numerical Methods (3)

Prerequisites: 50:198:381 and 50:640:250 and 50:640:314.

Remark: Formerly 50:198:473 Advanced Numerical Methods.

Numerical techniques for solving linear algebraic systems, eigenvalue problems, least squares, quadrature. Numerical solution of initial and boundary value problems for oridinary and partial differential equations.

50:198:483 Linear Programming (3)

Prerequisites: 50:640:221 and 50:640:250.

Linear programming using the simplex method and dual linear programming. Applications of linear programming to network flows and other problems. Convex sets and elements of convex programming. Combinatorial optimization. Integer programming.

50:198:485 Computational Mathematics (3)

Prerequisite: 50:640:250.

Remark: Cross-listed as 50:640:498 Computational Mathematics.

Computational aspects of number theory, with a brief introduction to underlying theories. Topics include prime numbers, pseudo primes, and their applications especially in cryptography; prime factorization of composite numbers via several different methods. Computer simulation is emphasized in the course.

50:198:487 Visualizing Mathematics by Computer (3)

Prerequisites: 50:640:221.

Remark: Cross-listed as 50:640:497 Visualizing Mathematics by Computer.

A comprehensive introduction to symbolic computational packages and scientific visualization through examples from calculus and geometry. Covers 2D, 3D and animated computer graphics using Maple, Mathematica and Geomview.

50:198:491,492 Special Topics in Computer Science (3)

Prerequisite: As announced or permission of instructor.

In-depth study of areas not covered in regular curriculum. Topics vary from term to term.

50:198:493 Senior Design Project (3)

Prerequisite: Senior standing or permission of instructor.

Design, implementation, and demonstration of a significant software and/or hardware project. Project proposals must be submitted and approved by instructor. Part of the lecture time is used to discuss such issues as the historical and social context of computing, responsibilities of the computing professional, risks and liabilities, and intellectual property.

50:198:494 Independent Study (BA)

Prerequisite: Permission of instructor.

Individual study under the supervision of a computer science faculty, intended to provide an opportunity to investigate areas not covered in regular courses.

50:198:495-496 Honors Program in Computer Science (BA,BA)

Prerequisite: Approval by department.

A program of readings and guided research in a topic proposed by the student, culminating in an honors thesis presented to the departmental faculty for approval.

50:198:497 Computer Science Internship (BA)

Prerequisite: Approval by department.

The practical application of computer science knowledge and skills through an approved internship in a sponsoring organization. Arrangements for the internship must be agreed upon by the sponsoring organization and approved by the department before the beginning of the term. Students should consult the detailed instructions before registering for this course.

Department of Computer Science
322 BSB, 227 Penn Street
Rutgers University, Camden, NJ 08102
Tel: (856) 225-6077 | Fax: (856) 225-6624

Valid XHTML 1.0!