Math & Computer Science Department B.A. Computer Science Course Descriptions
B.A. Computer Science Course Descriptions
An introduction to the technologies related to creation of a World Wide Web site. Emphasis will be placed on the latest languages and techniques used to create a dynamic site. Other topics may include image editing, simple animations, human- computer interaction and multimedia. Each student will participate in a series of projects that focuses on the creation of a dynamic interactive web site.
An introduction to the fundamentals of program- ming using a high-level, object oriented language such as C++ or Java. Emphasis will be placed on syntax and semantics of the language to write correct, exponentialcient, and easily modifiable pro- grams. Topics include but not limited to assignment statements, conditional and iterative control structures, functions, simple data structures, and software development.
This is a continuation of “CSC-1710 covering more advanced fundamentals of programming including problem-solving strategies, the concept of an algorithm and basic data structures. Various programming concepts will be introduced such as recursion, string processing, records, sorting, searching, linked lists, trees and object oriented programming.
A continuation of “CSC-1210 with the emphasis on human- computer interface and the usage of a database to facilitate the retention and delivery of in- formation. Various scripting languages such as Perl, PHP, and Python will be used during the course. Other topics may include Dreamweaver and Flash. Each student will participate in a series of projects that will focus on creation of a dynamic interactive web site.
This is a continuation of “CSC-1720 where the focus is on algorithm development utilizing advanced data structures such as graphs and trees. Various programming strategies will be addressed such as greedy, Divide and Conquer, backtracking, branch and bound and dynamic programming. Other topics include recursion, algorithm analysis, object oriented programming with inheritance and event driven programs.
An in-depth study of finite state machines, pushdown machines, context free grammars and Turing machines along with their variations. The notions of decidability, computability, complexity theory and a complete discussion of NP-Complete problems will also be addressed.
An in-depth examination of how graphics are implemented on a computer, with an emphasis on creating two- dimensional graphics using a standard API. Students will use the facilities provided by a standard API to express basic transformations such as scaling, rotation, and translation. Additional topics include: introduction to Maya, performance issues, input devices, real-time graphics and interaction, collision detection, and sound.
An introduction to instruction set architecture, microarchitecture, and system architecture. Topics include basic computer organization, digital logic circuits, design of the central processor and memory, addressing techniques, data representation, and fundamental programming techniques in assembly and machine language as it relates to operating systems and high level languages.
An introduction to the basic concepts of network technologies and network programming. Attention will be given to a layer model such as the Open System Interconnect (OSI) model. Students will be engaged in projects that may include the implementation of a network application, networking technology assessment, network performance evaluation, and network administration.
Study of the principles and practices of software engineering covering the software development life cycle. The focus will be software design from an object-oriented perspective, covering abstraction, encapsulation, data protection, inheritance, composition and polymorphism. Students will demonstrate their understanding of the software development life cycle through team projects.
Algorithm behavior and applicability. Interpolation, roots of equations, system of linear equations and matrix inversion, numerical integration, numerical methods for ordinary differential equations, and matrix eigenvalue problems.
An introduction to the various components of an operating system, including schedulers, memory management, interrupt handling, resource allocation, security and protection. Examples presented will be based on UNIX and other popular operating systems. Each student will participate in projects that involve kernel modifications, shell scripting, and simulations of components within the operating system.
A study of both hardware and software issues connected with solving a problem in a parallel processing environment which may include grid computing, cluster computing, or special hardware configurations such as a muti-core processor. Emphasis will be placed on identifying the basic properties of bandwidth, latency, scalability and granularity as it relates to an algorithmic solution to a problem. Students will design, code, test and debug programs for stated environments.
A continuation of “CSC-3360 with an emphasis on creating three-dimensional graphics using a standard API. Additional topics include: game engines, performance issues, input devices, real-time graphics and interaction, collision detection, sound, artificial intelligence and terrain rendering.
A study of the various programming language paradigms and basic program language translation. Emphasis will be on run-time behavior, lexical analysis, parsing context-free languages, translation specifications, and machine-independent code improvement. Each student will participate in programming projects to demonstrate various concepts.
Techniques for attacking and solving challenging problems from a variety of fields. Solutions will be implemented with a programming language such as Java or C++. Each student will be given the opportunity to participate in Local, Regional and International programming competitions.
A practical course in the maintenance of hardware and software on departmental equipment. Each student will assist in system administration activities such as: user account generation, software installation, web site maintenance, workstation cloning, clustering, and backups in a variety of environments including Linux, Mac OS X and Microsoft Windows.
Investigation of some topic in computer science to a deeper and broader extent than typically done in a classroom situation.
A continuation of “CSC-4910. At the conclusion of the course, results will be given in both a written paper and an oral presentation to the seminar participants and the department faculty.