|
Chair: Zhenguang
(Jeff) Gao
Professor: Suban Krishnamoorthy
Associate Professor: Mohideen Ibramsha
Assistant Professor: Zhenguang (Jeff) Gao
Instructors: Cornelia Breuning, David Keil, Joseph McCaul
The Department offers courses leading to the Bachelor of Science in Computer
Science and supports a minor in Computer Science. The primary purpose of the
Computer Science major is to prepare students for careers
in computer software development. The department also offers individual
courses in information-technology topics such as networking and web page design.
The industry standard language C++ is emphasized. Languages such as Java,
HTML, Java Script, and Visual Basic are offered as electives. Students are encouraged to do cooperative work with local companies
for up to one year, receiving up to four course credits, job experience, and (normally)
compensation in the process. Such experience is also beneficial in
seeking post-graduate employment.
Computing Facilities:
- Local area network with over sixty personal computers
running Windows operating systems
- Windows servers, UNIX servers, mail server, and web server
- Microsoft Visual Studio with C++ and Visual Basic,
Java, Assembler, MS Access
- Some classrooms equipped with computers and multimedia
systems for teaching
The General Education Requirement:
All students must satisfy a general education requirement consisting of twelve
(12) courses.
COMPUTER SCIENCE MAJOR (COS)
Departmental Requirements (16 courses)
Required Courses:
63.152 Computer Science I Using
C
63.252 Computer Science II with
Advanced C
63.258 Introduction to UNIX
63.259 Object-Oriented Programming
Using C++
63.261 Computer Organization and
Assembly Language
63.271 Data Structures
63.355 Computer Architecture
63.362 Software Engineering
63.465 Operating Systems
63.477 Computer Networking or
63.476 Networking
Technologies
43.117 Introduction to Statistics
43.219 Calculus I
43.292 Discrete Mathematics I
53.321 Digital Electronics
Computer Science majors must meet a two semester
laboratory science requirement. The following courses that meet general
education goal 6 are recommended:
33.107
Principles of Chemistry and
33.108 Principles of Chemistry
and Quantitative Analysis
or
73.231 Physical Geology and
73.232 Historical Geology
Computer Science electives:
Computer Science majors must take two (2) courses chosen
from the computer science offerings numbered 300 or above. 63.490
Directed Study and 63.495
and 63.496 (Cooperative Program in
Computer Science) may not be used to satisfy the Computer Science elective
requirement.
Free electives:
Students choose four (4) free elective courses.
Students are strongly encouraged to choose 63.495 and 63.496 (Cooperative
Program in Computer Science) to gain industrial experience, but may choose to
enroll in other computer science courses, courses toward a minor in a related
department, or courses from any department of the College.
MINOR IN COMPUTER SCIENCE (5 courses)
63.152 Computer Science I Using
C
63.252 Computer Science II with
Advanced C
63.258 Introduction to UNIX
63.259 Object-Oriented Programming
Using C++
63.271 Data Structures
Computer Science Courses Appropriate for General Education
(Gen.Ed.)
Course
Descriptions
From the 2001-2002
Undergraduate College Catalog
63.152 Computer Science I Using C (Gen.Ed. Goal 16)
     An introduction to computer problem-solving using the programming languages C and C++. The course stresses ethics, proper design and testing of programs, as well as program readability. The course emphasizes features of the ANSI standard such as function prototypes. The input/output is covered both in C and C++.
63.108 HTML and JAVA Programming and Web Site Development (Gen.Ed. Goal 16)
     An introduction to the various features of HTML and JAVA Languages such as tags, images, buttons, forms, animation files, etc. Students learn to program using these Languages to create Applets to perform animation with sounds, forms, and files. One of the applications students create is a complete web site using various tools including a browser. Use of JAVA to develop internet/networked client-server applications is also discussed.
63.149 Presentation Graphics Using Computers (Gen.Ed. Goal 16)
     Introduction to the use of a personal computer to produce effective, persuasive presentations. Students learn how to use drawing and painting tools, how to generate and organize slides, and how to automate the production of bulleted lists, organizational charts and other popular kinds of visual documents.
63.150 Introduction to Programming Using BASIC (recommended for non-science majors)
     Description of the computer and its logical structure, a discussion of peripheral hardware, a survey of data processing, and computer-related social issues. The BASIC language is studied and used to solve numeric and non-numeric problems. Note: This course may not be taken for credit by a Computer Science major after having passed 63.152 Computer Science I Using C.
63.151 Personal Computer (PC) Fundamentals and Applications (Gen.Ed. Goal 16)
     A hands-on introduction to three of the most popular personal computer applications in use today - the word processor, the spreadsheet organizer, and the data base manager. In addition, the course provides exposure to the organization of a personal computer and its peripheral devices, including the interacting roles of hardware and software
63.205 Introduction to Visual Basic (Gen.Ed. Goal 16)
     An introduction to the visual basic programming environment and the event driven programming model. Topics include forms and controls, code construction, functions and parameter passing, use of lists and combo box controls, creation of menus, program structure, error handling, and debugging of programs.
Prerequisite: 63.152 Computer Science I Using C, or familiarity with a Windows environment and programming experience in any language.
63.258 Introduction to UNIX
     An introduction to the UNIX operating system, emphasizing System V. Topics covered include shells (Bourne/C/Korn) and shell programming, files and processes, UUCP, system administration, text/editors, and formatters. The course includes extensive coverage of UNIX system calls.
Prerequisite: 63.152 Computer Science I Using C or programming experience in C.
63.259 Object-Oriented Programming Using C++ (Gen.Ed. Goal 16)
     A first course in C++ with an emphasis on class construction. Topics covered include operator and function name overloading, inheritance, late binding, templates, and nested classes.
Prerequisite: 63.252 Computer Science II with Advanced C, or programming experience in C. Students with substantial programming experience in languages other than C should obtain consent of the instructor.
63.261 Computer Organization and Assembly Language Programming
     Introduction to computer organization and assembly language programming. Representation of data, addressing modes, CPU instructions, and pseudo-instructions. Discussion of I/O and interrupt programming.
Prerequisite: 63.252 Computer Science II with Advanced C.
63.271 Data Structures
     An introduction to fundamental data structures such as linear lists, stacks, queues, linked lists, trees, and graphs. Dynamic storage management, file structures, and sorting and search algorithms are presented. Programming projects illustrate related concepts with emphasis on analysis of related algorithms.
Prerequisite: 63.252 Computer Science II with Advanced C.
63.320 Windows NT Server & Client Management
     Designed to teach students how to plan, set up, and configure NT server and workstations with TCP/IP enterprise protocol; monitor and control security within the NT systems network; administer user accounts, system disks, file system, mail, print and remote access services; and recover from server failures.
Prerequisite: 63.252 Computer Science II with Advanced C or equivalent computer industry experience.
63.330 JAVA Programming
     A comprehensive study of object-oriented programming using JAVA. Topics covered include objects, core JAVA classes, writing Applets, thread control, input-output streams, JAVA User Interface, Abstract Windowing Toolkit, working with URLs, security, and error handling using exceptions.
Prerequisite: 63.252 Computer Science II with Advanced C or equivalent computer industry experience in C or C++.
63.355 Computer Architecture
     A study of the architecture of computer systems, the relationship between user applications and computer architecture as well as the relationships between operating systems, system software, and computer architecture. Topics covered: computer organization, user-oriented aspects of computer structure, register transfer operations, computer control with strong emphasis on micro-programming, and operating system level of computer architecture. Advanced topics including multi-level computers, program portability, virtual machines, and high level language oriented machines.
Prerequisite: 63.261 Computer Organization and Assembly Language Programming and 53.321 Digital Electronics.
63.357 Programming Languages
    
Study of the structure, design and implementation of high-level programming languages. Examples are taken from ALGOL 60, LISP, SNOBOL, APL, SIMULA, SYMPL, and BLISS languages. Introduction to formal language theory and Turing machines.
Prerequisite: 43.220 Discrete Mathematics and 63.271 Data Structures.
63.361 File Systems
     Study of common file organizations: sequential, differential, and index-sequential. Sorting, merging, and searching of files. Organization and maintenance of indexes. Access and processing of files in common programming languages. Analysis of different organizations and related access methods.
Prerequisite: 63.271 Data Structures.
63.252 Computer Science II with Advanced C (Gen.Ed. Goal 16)
     A continuation of problem-solving using the programming languages C and C++. Topics covered include advanced functions, scope, pointers, arrays, structures, enumeration types, typedefs, dynamic memory allocation, bit manipulation, and file operations. There is some elementary discussion of C++ classes and objects. The course uses standard C and C++ libraries.
Prerequisite: 63.152 Computer Science I Using C.
63.362 Software Engineering
     Principles of systematic program design and implementation. Structured programming and top-down segmented program development. Stepwise program development. Chief Programmer Team, HIPO, and other programming techniques. Decision tables. Program correctness and verification. Software reliability.
Prerequisite: 63.271 Data Structures.
63.404 Seminar in Computer Science
     An exploration of an advanced topic in computer science. The particular topic is announced at least one semester in advance.
Prerequisite: Permission of the instructor.
63.457 Introduction to Artificial Intelligence
     Coverage of LISP or other Artificial Intelligence (AI) Programming Language (e.g. Prolog); survey of AI applications including expert systems, production systems, knowledge-based systems; techniques in AI programming.
Prerequisite: 63.357 Programming Languages.
63.465 Operating Systems
     Interrupt mechanism, memory management, concurrency, process synchronization, resource allocation, job scheduling, secondary storage and peripheral device management, file systems, and evaluation. The concepts are presented through lectures and illustrative projects implementing tasks in an operating system to be run on a simulated machine.
Prerequisite: 63.271 Data Structures and 63.355 Computer Architecture.
63.466 Theory and Implementation of Compilers
     A study of regular expressions, finite automata, formal grammars, parsing, intermediate code generation and optimization, and target code generation techniques for high-level programming language translation.
Prerequisite: 63.261 Computer Organization and Assembly Language Programming and 63.357 Programming Languages.
63.467 Data Base Management Systems
     A study of abstract data structures and data base implementation techniques, including an introduction to sentenial and predicate logic, relational view of data, relational algebra and calculus, normalization, schema and decomposition of relations, and hierarchal and network views of data. Some existing data base systems are also reviewed.
Prerequisite: 63.271 Data Structures and 43.219 Calculus I.
63.472 Computer Graphics
     Introduction to computer graphics systems and display devices: memory refreshed, storage tube, scan conversion devices. Graphical input techniques: light pen, joystick, tablet, mouse. Graphic data structures and languages. 2D transformations, 3D graphics, hidden line removal and shading. Graphics in man-machine communications and in Computer Aided Design.
Prerequisite: 63.261 Computer Organization and Assembly Language Programming; 63.271 Data Structures; 43.215 Finite Mathematics or 43.226 Linear Algebra and Applications.
63.475 Microcomputers
     Study of microprocessors, microcomputer structure, interfacing and programming. Design of microcomputer based systems. Microcomputing technologies. The course includes lectures, use of cross-assemblers and simulators, and laboratory experiments on actual microcomputer systems, as well as work on hardware and software projects.
Prerequisite: 53.321 Digital Electronics and 63.261 Computer Organization and Assembly Language Programming.
63.476 Networking Technologies
     A detailed study of various networking technologies such as internetwork-ing, fire walls, network management using Simple Network Management Protocol (SNMP), and network security. In the internetworking area, topics such as repeaters, bridges, brouters, routers, gateways, hubs, and MAU are presented in detail. The course also provides a brief introduction to Ethernet, Fast Ethernet, Virtual LAN, Token Ring, and Asynchronous Transfer Mode (ATM).
Prerequisite: 63.271 Data Structures or equivalent computer industry experience.
63.477 Computer Networking
     An introduction to the seven layers of the OSI model. General topics include network topologies; introduction to Local Area Networks, such as Ethernet, Token Ring, and FDDI; and internetworking. Special topics include TCP/IP and FTP protocols, socket interface, Remote Procedure Call (RPC), and client-server architecture.
Prerequisite: 63.271 Data Structures or equivalent computer industry experience including strong programming skills in C or C++.
63.478 Principles of Data Communications
     A technical overview of data communications. Topics covered include modulation and modems, interface standards (RS-232C, RS-449), frequency and time-division multiplexing, T1 transmission, transmission media (twisted pair, coaxial cable, fiberoptic cable, microwave, satellite), character and bit-oriented link protocols (e.g., BSC, SDLC, DDCMP), circuit and packet switching, local area networks, and network protocols.
Prerequisite: Permission of the instructor.
63.479 Design of Digital Computers
     Advanced course intended for senior students with a good knowledge of computer organization and architecture. Detailed study of structure and functioning of computer units. Systematic approach to design of different functional units, interfaces, and special purpose digital systems. Study of novel computer organizations.
Prerequisite: Permission of the instructor.
63.480 Parallel Architectures and Parallel Programming
     A course to provide students with a general background in parallel computation at the level of architecture, communication, data structures, algorithms, analysis, programming models, and programming languages. The main focus will be on models and languages. A broad taxonomy of parallel programming languages will be evaluated and compared on a number of grounds: simplicity, expressiveness, modularity, efficiency, and feasibility. Students will be asked to read assigned papers, make presentations on selected topics, acquire hands-on experience with one or more parallel programming systems, and work on specific projects.
Prerequisite: 63.271 Data Structures, 63.355 Computer Architecture, 63.357 Programming Languages.
63.481 Microsoft Windows Programming
     A study of Windows 3.1 programming and application development for experienced C and 80x86 programmers. Topics include: using windows programming models, windows development environments, windows classes, objects, and messages; the windows API; painting and text output; keyboard and mouse input; windows timer and memory management; windows resources, menus and dialogue boxes; elements of graphics device interface. Additional topics are chosen from the following: clipboard usage, dynamic data exchange, object linking and embedding, multiple document interface, printer management, fonts, dynamic link libraries, application framework tools, and client/server applications.
Prerequisite: 63.252 Computer Science II with Advanced C or equivalent experience in C, 63.261 Computer Organization, 63.271 Data Structures. Some C++ experience desirable.
63.485 Advanced Networking Technologies
     A comprehensive study of technologies such as Fast Ethernet, 100VG-ANYLAN, Broadband ISDN, and Asynchronous Transfer Mode (ATM). The main topic of the course is ATM technology. The BISDN/ATM reference model, protocols in physical ATM and ATM adaptation layers are presented. Special areas such as standards, traffic management, signaling, ATM switch architecture, SONET, LAN emulation, IP over ATM, and applications are extensively discussed.
Prerequisite: 63.477 Computer Networking, or 63.478 Principles of Data Communications, or equivalent course, or equivalent industry experience.
63.490 Directed Study
     Under the direction of a faculty member, the student researches a topic or topics in computer science. Students should make arrangements with the faculty member who is to direct their work one semester in advance of the work.
63.495 Cooperative Program in Computer Science (credit-two courses)
     A cooperative program in which students are placed in computer positions in corporate or government settings. Students are expected to work a minimum of 25 hours per week. These positions are normally compensated. Upon completion of the course, students will provide written documentation concerning their work projects.
Prerequisite: Upperclass standing in computer science with at least a 3.0 average in computer courses or permission of instructor.
63.496 Cooperative Program in Computer Science (credit-two courses)
     A cooperative program in which students are placed in computer positions in corporate or government settings. Students are expected to work a minimum of 25 hours per week. These positions are normally compensated. Upon completion of the course, students will provide written documentation concerning their work projects. Note: This course may not be taken concurrently with 63.495.
Prerequisite: 63.496 Cooperative Program in Computer Science (credit-two courses)
|