2016-17 Undergraduate Catalog : Macricostas School of Arts & Sciences

Computer Science

Computer Science

CS 110 Website Production 3 SH
Using a problem-solving based approach, students will be introduced to the various aspects of website production including problem specification, requirements analysis, image, video, audio, HTML, VRML, and programming using a scripting language such as JavaScript. Through the use of interactive, hands-on sessions, students will be able to construct a website that satisfies a specific set of requirements. Not for CS major credit. Fall and spring semesters. Prerequisite: MAT 100 or MAT 100P or appropriate placement. General Education: Computer Science.

CS 135 Introduction to Problem Solving with Computers 3 SH
Beginning with a historical perspective, students will first be introduced to various computer concepts including data and information processing, and networks. Students will explore various computer-based problem-solving strategies such as flow-charting, numerical modeling, data abstraction and algorithm design. Subsequently, students will be introduced to several computer applications that provide the tools necessary to implement these strategies. Not for CS major credit. Fall and spring semesters. Prerequisite: MAT 100 or MAT 100P or appropriate placement. General Education: Computer Science.

CS 140 Introduction to Programming 4 SH
This is an introductory course in computer programming using a high-level programming language such as Java, C#, Python, etc. The registration booklet will indicate the language used in each section of the course. The course emphasizes problem solving and sound programming practices. No previous programming experience is necessary. During this course, students will learn how to construct algorithms and convert them into computer programs using typical flow control statements and data types. Not for CS major credit.  Every semester.  Prerequisite: MAT 100 or MAT 100P or appropriate placement.  General Education: Computer Science.

CS 143 Visual BASIC 3 SH
This is a first course in programming. No previous programming experience is necessary. Student will learn how to write interactive windows-based programs that solve real problems in their field. Students will learn how to construct algorithms and convert them into computer programs using all the typical control statements, data types, and aggregate data structures. Program interfaces will consist of the common window controls such as buttons, textboxes, list-boxes, combo-boxes, common dialog boxes, etc. Not for CS major credit. Fall and spring semesters. Prerequisite: MAT 100 or MAT 100P or appropriate placement. General Education: Computer Science.

CS/MAT 165 Introductory Discrete Mathematics 4 SH
See MAT/CS 165. General Education: Math.

CS 166 Introduction to UNIX 3 SH
An introduction to problem solving and algorithmic development. The fundamentals of the UNIX operating system concepts, architecture and administration are covered. Topics will include: the functions of an operating system and how UNIX fulfills that role, the file system, shells, scripting, utilities and system administration. The course emphasizes problem solving and basics of computer programming in UNIX/Linus computing environment. Not for CS major credit. Fall semester. Prerequisite: MAT 100 or MAT 100P or appropriate math placement score. General Education: Computer Science.

CS 170 Language C++ 4 SH
An in-depth introduction to a modern programming language (C++) and its use in constructing programs that solve a variety of problems. Students entering the course should be familiar with fundamental programming techniques in another language, including using variables and data types, branching, looping, and one-dimensional data collections. These topics will be reviewed and extended with regard to the language C++. Other topics covered in the course include streams, files, pointers, dynamic memory allocation, scoping, argument passing mechanisms, functions as arguments, function and operator overloading, templates, recursion, classes and other user-defined data types, vectors and multidimensional arrays, strings and C-strings. The software development process is emphasized. The course will include a significant amount of project work.  Prerequisite: CS 140 or CS 143.

CS 172 Intermediate Java Programming 3 SH
This is a continued exploration of computer programming. It emphasizes object-oriented techniques: using and creating classes and objects, inheritance, polymorphism, and Java interfaces, file input and output, introduction to event-driven programming, recursion, and elementary searching and sorting techniques. The course uses a modern widely used object-oriented programming language. It has a substantial project component.  Prerequisite: CS 140 or CS 143.

CS 200 Applied Topics 3 SH
This course provides students with an exploration of the use of computing in an applied area. Each offering of this course will focus on a chosen applied computing topic (robotics, computer art technology, databases, etc.) and provide students with an environment within which they can learn, through discovery, how computing will affect their lives. Prerequisite: CS 110 or CS 135 or CS 140 or CS 143 or CS 166 or permission of the instructor. General Education: Computer Science.

CS 205 Data Modeling & Database Design 4 SH
An in-depth introduction to information management techniques with emphasis on data modeling and relational database design. Topics include conceptual data modeling, relational database design and normalization, database query languages, schema integration and integrity constraints, physical database design, and database usability issues in a shared environment. Students will design and implement a database application working from the E-R modeling stage through to the actual implementation. This course lays the data modeling foundations used in CS 305 Database Applications Engineering, CS350 Object Oriented Software Engineering and CS 360 Distributed Applications Engineering. Fall semester. Prerequisite: CS 140 or CS 143 or CS 170.

CS 215 Computer Architecture 4 SH
An introduction to logic circuit design, computer hardware, and microprocessors. The study of finite state machines, control units, arithmetic units, main memory, IO systems, interrupts, and computer peripherals. Data representations, instruction formats, machine and assembly-level organization. The current trends of parallelism are emphasized. Fall semester. Prerequisite: CS 140 or CS 143 or CS 170.

CS 221 Object Oriented Programming and Data Structures 4 SH
This course begins with a thorough discussion of object-oriented programming, including single- and multiple-inheritance, polymorphism, operator overloading, memory management, name scope management, generic classes, and exception handling. The programming language used is C++. The course continues with an introduction to the abstract data types: stacks, queues, lists, sets, maps, heaps, priority queues, trees and graphs, their implementation, the associated algorithms and their implementation and basic analysis. There is a balanced emphasis on development of recursive algorithms throughout the course. The course includes a significant amount of project work.  Prerequisite: MAT 165 or MAT 170.

CS 235 Digital Media 4 SH
This course explores, from a technical point of view, the many ways that computers are used to produce both still and animated images. Topics include: color theory, computer graphics hardware, imaging algorithms, graphics file formats, and analysis of related software applications. Prerequisite: CS 170 or CS 144 or CS 250; ART 108 or ART 111.

CS 240 Computer Organization and Software 4 SH
As your high-level language program executes, it invokes other software residing on the system. In this course we examine the role of this layered hierarchy of foundation software. By understanding underlying software technologies, you will better understand the implementation of current high-level software technologies and be prepared to learn new technologies. The topics covered include event driven programming, GUI and human-computer interaction, implementation of simultaneous computations and their communication and coordination, network computing and security, programming for constrained platforms, and introduction to intelligent systems behavior. Spring semester. Spring semester. Prerequisite: CS 221.

CS 245 Web Applications Development 4 SH
This course provides a thorough coverage of web application development. Students learn how to use HTML and XHTML features along with one of the scripting languages such as JavaScript or VB script, and are exposed to a selection of server side technologies such as Active Server Pages (ASP) and Java Server Pages (JSP). Students choose their implementation tools based on their previous programming background. Students also learn advanced features of various technologies such as cascading style sheets, objects and collections of objects and the HTML event model for dynamic document formatting. Prerequisite: CS 250 or CS 144 or CS 170 and CS 205.

CS 250 Advanced Topics in Programming Using Java 4 SH
This course quickly covers all the fundamental concepts in the Java Language and then concentrates on more advanced topics such as events, various collection classes, the serialization of objects, multi-threaded programming, database connectivity, network programming with sockets, applets, and servlets. Prerequisite: CS 140 or CS 170 or a background in object-oriented programming.

CS 265 Computer Security Implementation with Java 4 SH
This course quickly covers all the fundamental concepts in the Java Language and then concentrates on implementing computer security features with Java such as: policy files and permissions, authentication and authorization, Java encryption extensions, implementing digital signatures, secure socket programming, Java Web applications security, comparison with the security features of other platforms. Offered odd-year spring semesters. Prerequisite: CS 170 or permission of the instructor.

CS 285 Artificial Intelligence 4 SH
The field of artificial intelligence (AI) is concerned with the design and analysis of autonomous agents. Artificial intelligence also provides a set of tools for solving problems that are difficult or impractical to solve with other methods. These include: heuristic search and planning algorithms, for knowledge representation and reasoning, machine learning techniques and methods applicable to sensing, and action problems such as speech and language understanding. The student needs to be able to determine when an AI approach is appropriate for a given problem and to be able to select and implement a suitable AI method. Prerequisite: CS 250 or CS 144 or CS 221; MAT 165 strongly recommended and Junior standing.

CS 297 Cooperative Education 1–9 SH

CS 298 Faculty Developed Study 1–4 SH

CS 299 Student Developed Study 1–4 SH

CS 305 Database Applications Engineering 4 SH
This course addresses the engineering of software application systems with extensive client/server database components. It encompasses all phases of the life cycle of a software system, including planning, analysis, design, implementation, testing, and operation and maintenance. In a team project, students participate in the development of an integrated medium-size information system that uses a contemporary large database management system (DBMS). The course may be offered with different DBMS, specified as an option at each offering. For the offerings with Oracle the following Oracle subsystems are used: Oracle SQL Plus, PL/SQL, Forms Builder, and Report Builder. This course will be an elective in the Computer Science program unless it is being substituted for the required course CS 350.  Prerequisite: CS 170 and CS 205.

CS 315 Design and Analysis of Algorithms 4 SH
The design, implementation and analysis of algorithms. The course explores basic algorithmic strategies, such as divide and conquer, greedy algorithms, recursive backtracking, dynamic programming and other, and ways to analyze their efficiency and select an appropriate strategy for practical problems. Fundamental data structures such as trees and graphs and the associated algorithms are studied in depth. The classes of P- and NP-complete problems are discussed. Other topics include parallel algorithms, pattern matching algorithms, and state space search. Fall semester. Prerequisite: CS 221 and MAT 181 or MAT 171.

CS 330 Computer Graphics 4 SH
The fundamentals of computer graphics including typical hardware and software configurations, raster and vector graphics, and common graphics standards. Graphics primitives (both 2D and 3D) and attributes will be used in developing computer programs. Prerequisite: CS 144 or CS 250 or CS 171 and Junior standing.

CS 340 Computer Animation 4 SH
An exploration of the theory and application of computer animation. Students will participate in both a lecture component covering both traditional and computer animation concepts, and a project component consisting of the creation of an animation including at least two objects in motion, and including one or more advanced concepts presented during the lecture component of the course. Alternate fall semesters. Prerequisite: CS 144 or CS 171 or CS 250 and Junior standing.

CS 350 Object Oriented Software Engineering 4 SH
This course addresses the engineering of software application systems with extensive client/server database components. It encompasses all phases of the life cycle of a software system, including planning, analysis, design, implementation, testing, and operation and maintenance. In a team project, students participate in the development of an integrated medium-size information system that uses a contemporary large database management system (DBMS). The course may be offered with different DBMS, specified as an option at each offering. For the offerings with Oracle the following Oracle subsystems are used: Oracle SQL Plus, PL/SQL, Forms Builder, and Report Builder. This course will be an elective in the Computer Science program unless it is being substituted for the required course CS 350. Prerequisite: CS 205 and 221.

CS 351 Independent Study 3 SH
Designed for students who show above average ability and interest in computer science, this course allows the student to study advanced topics not included in standard course offerings. Approval from the chair of the Department of Computer Science is required. Fall and spring semesters.

CS 355 Programming Languages 4 SH
Formal definition of programming languages, including specification of syntax and semantics. Types of languages and their uses. Programming language design questions with respect to data types, variables, expressions, assignment and control statements, subprograms, etc., with examples of their solutions. Organization of compilers illustrating compilation of simple expressions and statements in imperative languages. Use of functional and logic programming languages for knowledge representation and reasoning. Fall semester. Prerequisite: CS 171 or CS 221, CS 240, and CS/MAT 165. Recommended CS/MAT 359.

CS/MAT 359 Introduction to the Theory of Computation 3 SH
See MAT/CS 359.

CS 360 Distributed Applications Engineering 4 SH
This course introduces principles of software engineering with emphasis on building distributed applications. After an introduction to software engineering and overview of the fundamentals of networking, the course covers topics specifically related to distributed systems, such as processes and interprocess communication, distributed process synchronization, naming, security and reliability issues in distributed systems. Students will study the architecture of typical distributed applications. They will build programs for the primary components of distributed architectures. In a team project, they will participate in the development of a distributed application. This course will be an elective in the Computer Science program unless it is being substituted for the required course CS350. Prerequisite: CS 205 and CS 240.

CS 385 Data Mining 4 SH
This is an introductory course in data mining, an evolving and growing interdisciplinary area of research and development, both in academia as well as in industry. Along with the traditional concepts and functions of data mining, like classification, clustering, and rule mining, students will be introduced to the current issues related to mining in Web and in multimedia applications. This course is an elective in the computer science program. Prerequisite: CS 171 and Junior standing.

CS 390 Computer Science Research 3 SH
This course provides students with an exploration of both computer science research and research methods in general. Through a combination of required seminars and guided research projects, students will be immersed in a typical undergraduate research environment. Offered in summer. Prerequisite: CS 240 and Junior standing or permission of the instructor.

CS 399 Honors Project 3 SH
This course requires that each student implement a programming project in an area selected by the student and approved by the instructor. The student will be expected to: 1) investigate the project area in the current literature and 2) make a final oral report at an “open seminar.” The student who passes this course with an “A” and maintains at least a 3.5 average in computer science courses at the university will be considered to have graduated with honors in computer science. Fall and spring semesters. Prerequisite: CS 355 and CS 450 and in all CS/MAT required courses a GPA of 3.5 or higher.

CS 410 Compiler Construction 4 SH
Phases of a compiler: scanning, parsing, internal representation, code generation and optimization; tools for compiler development; and a compiler for a simple language will be studied. Programming projects will be required. Prerequisite: CS 240 and CS 350.

CS 444 Computer Networks 4 SH
An introduction to computer networks and data communications. Course work includes a study of network organization, telecommunication principles, network software and hardware, and examples of existing networks. Data communications: concepts, modes, devices, coding theory, and systems structures as well as networks types, structures, topologies, and protocols will be studied. ISAO reference model: protocol layers and functions; LAN and WAN; Wireless MANs and LANs, home networking, communication protocols, PTP networks, network programming, Client/server programming, Web programming, and computer networks security. Network programs will be implemented using operating system services, and high-level language (e.g. Java) Prerequisite: CS 315 and MAT 120.

CS 450 Operating Systems 4 SH
A study of history, evolution, philosophies, and structures of operating systems. Discussion of the operating systems concepts. Processes, resource management, virtual machines, scheduling, memory management, file systems, device management, allocation techniques, memory protection, virtual memory, paging and segmentation. The role of the OS in security and protection. OS interface and distributed/network OS concepts. Detailed comparative study of features and architecture of selected operating systems. Fall semester. Prerequisite: CS 215 and CS 240 and Senior standing.

CS 484 Special Topics in Computer Science 4 SH
An examination of one or a few related emerging topics in computer science. The topics in this course will be announced by the middle of the previous semester. Prerequisite: CS 350 and Junior standing.

CS 484 Special Topics in Computer Science 4 SH
An examination of one or a few related emerging topics in computer science. The topics in this course will be announced by the middle of the previous semester. Prerequistie: CS 350 and Junior standing.

The following courses also have been approved and are offered periodically:
CS 144 Advanced Visual BASIC
CS 201 Computer Language Topics
CS 270 Computers in Society