Undergraduate Catalog 2020-2021 : Macricostas School of Arts & Sciences

Computer Science

CS 102 3D Modeling & Printing 3 SH
This course will provide students the opportunity to design and produce various 3D model designs using both solid modeling and computer-aided design software, and culminating in the production of physical models via 3D printers. It will also allow students to explore how this process can be used within their respective majors. Prerequisite: MAT 100 or MAT 100P or appropriate placement. General Education: Computer ScienceCompetency: QR.

CS 103 Computer Animation & Scripting 3 SH
This course will provide students the opportunity to design and produce 2D computer animations using both feely available software tools and standard scripting languages. It will allow students to explore both the technical/mathematical strategies, and the aesthetic choices requisite for the creation of short computer animations. Prerequisite: MAT 100 or MAT 100P or appropriate placement .Competency: QR.

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, 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. Competency: QR

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. Competency: QR

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. 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 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: C or better in CS 140.

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.

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 202 Database Development I 3 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. Students will design and implement a database application, working from the E-R modeling stage through to the actual implementation. Prerequisite:CS 140 or CS 143.

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, CS 350 Object Oriented Software Engineering and CS 360 Distributed Applications Engineering. Fall semester. Prerequisite: CS 140 or CS 143.

CS 215 Computer Organization and 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.

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: C- grade or better in CS 170 and C grade or better in MAT 141.

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 172; ART 121 or ART 141; Junior standing.

CS 240 Software Organization 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, introduction to parallel and multithreaded programming, computer network programming, and introduction to information assurance. Spring semesters. Prerequisite: CS 221.

CS 245 Web Applications Development 4 SH
This course provides a thorough coverage of Web application development. The practical work involves building a dynamic “e-commerce” web site. Such a site will respond to the user’s requests with dynamically constructed web pages.  To construct the data entry web pages the students will learn how to use common HTML and XHTML features along with one scripting language such as JavaScript.  The returned web pages will be built by server-side applications.. Students will be exposed to a selection of server-side technologies such as PHP, Active Server Pages (ASP), Java Server Pages (JSP), Java Servlets, or CGI programming with Perl or C++.  To enhance their projects students will 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. The use of the Extensible Markup Language (XML) will also be studied. Spring semester. Rotates with CS 250 Advanced Programming with Java. Prerequisite: CS 170 or CS 172 or CS 250.

CS 250 Introduction to Data Structures, Algorithms and Complexity 3 SH
The main emphasis of the course are basic data structures and the associated algorithms and the notions of time and space complexity of algorithms. It describes  algorithms for sorting and searching arrays, the big O notation, and explores the implementation,  use, and algorithms for other data structures such as linked lists, stacks, queues, sets, maps, hash tables and binary search trees. It also covers data structures in Java class libraries with emphasis on using generic classes. Optionally, other data structures and algorithms may be included, such as priority queues, heaps, and the heapsort algorithm. Other topics in the course are Java event-driven programming for GUI, exception handling, Java streams and files, and generic programming. There will be a balanced emphasis on recursion throughout the course. Not for CS or Applied Computing credit. Odd Fall Semesters. Prerequisite: CS 172 and MAT 141.

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, 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 221; MAT 141 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 302 Database Development II 1 SH
A second course in data modeling and database design, continuation of CS 202. This course emphasizes advanced ER and relational modeling techniques, advanced use of SQL, second level computations for physical database design and design of distributed databases, and database usability issues in a shared environment. Students will create a database application, iterating through conceptual, logical and physical modeling and implementation. The course requires substantial out of class preparation and includes a substantial project component. Prerequisite: CS 202 and either CS 140 or CS 143 or CS 170 or CS 172.

CS 303 Introduction to Data Science with Python 4 SH
This course introduces the methods, algorithms, processes and tools to extract knowledge from various forms of data and provides hands-on experience with them.  These methods and tools can be applied to a wide variety of application areas, e.g. analyzing election results, forecasting stock returns, seeking new classes of astronomical objects, or analyzing data in chemistry, biology or physics. The course assumes familiarity with Python, intermediate skills in designing algorithms, database design skills and knowledge of statistics. The programming language Python is currently a first- class tool for scientific computing with a small and easy to learn core and powerful libraries of data analytics algorithms.  Can be used as CS/Applied Computing elective. Odd Spring Semester.  Prerequisite: CS 140, CS 170 or 172, CS 205, and MAT 222. .

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. This course will be an elective in the Computer Science program unless it is used as a required Software Engineering course. Rotates with CS 350 Object Oriented Software Engineering and CS 360 Distributed Applications Engineering. Prerequisite: CS 170 and 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: C- or better in CS 221 and C or better in either 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 250 or CS 221 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 221 or CS 250 and Junior standing.

CS 350 Object Oriented Software Engineering 4 SH
This course addresses the application of theory, knowledge, and practice for effectively and efficiently building software systems that satisfy the requirements of users and customers. Central topics are software quality, evolution, reuse and cost. The methods introduced are applicable to small, medium, and large-scale systems. The course emphasizes modern object-oriented methodologies and  encompasses all phases of the life cycle of a software system, including requirements specification and analysis, design, construction, testing, and operation and maintenance. Students participate in a team project for development of a medium-size system. This course will be an elective in the Computer Science program unless it is used as a required Software Engineering course. Rotates with CS 360 Distributed Applications Engineering and CS 305 Database Applications Engineering. Prerequisite: CS 205 and 221.  CS 240 strongly suggested.

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:  Grade of C or better in CS 221 and CS 240; CS/MAT 165 or MAT 304; CS/MAT 359 is recommended.

CS 357 Introduction to Embedded Systems 4 SH
Students will become familiar with software development for small embedded computer systems such as Arduinos and DigiSparks. They will first focus on C language programming but will sharpen their assembly language skills as well as they investigate timing critical features. The students will learn how to read product data sheets and from the information contained in those, how to write their own libraries to support such devices as LCD displays, and LED panels. Some projects developed in the course will make use of SPI and I2C busses, and the students will become very familiar with how these work. Each student will design and implement their own final project, incorporating various hardware and software components of their own choosing.  Prerequisite: CS 166 and CS 215.

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 inter-process 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 used as a required Software Engineering course. Rotates with CS 350 Object Oriented Software Engineering and CS 305 Database Applications Engineering. 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 and 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 221 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 GPA of 3.5 or higher in all CS/MAT required courses.

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 communication. Course work includes a study of network organization, telecommunication principles, network software and hardware, and examples of existing networks. Data communication: concepts, modes, devices, coding theory, and system 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 240 and CS 315.

CS 450 Operating Systems 4 SH
A study of history, evolution, philosophies, and structures of operating systems. Discussion of the operating system 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.

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 305 or 350 or 360 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