# Course Descriptions

**CSC 1510 Introduction to Information Technology ****4 cr.**

This course introduces students to how Information Technology can be leveraged for storing, managing, and exploring data in the Information age. Topics include: how computers work, information management, networks, operating systems, the Web, and a short introduction to computer programming. Not open to computer science majors. Satisfies the mathematics and science distribution requirement. *Four hours per week.*

**CSC 1520 General Computer Science 4 cr.**

The perception that Computer Science equals programming is a simplification that misrepresents the breadth of what Computer Scientists do and how we approach the world. This course introduces freshman Computer Science majors to the breadth of their discipline, from examining the physical computer and how it stores digital data to understanding classic problem-solving. Time will be spent on the topics of mathematics that tie most directly into problems in our field. Students will also work on collaborative interdisciplinary projects with introductory students in the Engineering majors throughout the semester. *Four hours per week.*

**CSC 1610 Problem Solving with Programming 4 cr.**

An introduction to computer science techniques with an emphasis on algorithm development and structured programming. Topics include program development, modularity, streams, control structures, functions, recursion and arrays. Satisfies the mathematics and science distribution requirement. *Four hours per week.*

**CSC 2001, 2002, 2003, 2004 Information Technology Internship 1 cr. ea.**

Student interns are placed in the Merrimack College Information technology Center and are expected to work 4 hours per week for 15 weeks under the supervision of the manager of User Services.

**CSC 2620 Object Oriented Programming 4 cr.**

A study of object oriented design and its key concepts: data abstraction, inheritance, information hiding, polymorphism, and encapsulation. Object oriented design and analysis concepts will be introduced and implemented using UML. Programs illustrating key concepts will be written in Java. Prerequisite: CSC 1610 with a minimum passing grade of C or consent of the instructor. *Four hours per week.*

** CSC 2710 Analysis of Algorithms 4 cr.
** Introduction to the basic principles and techniques for analyzing algorithms. A discussion of the asymptotic complexity of algorithms using standard measures in the best, average and worst cases. Applications of the basic principles and techniques and study of upper and lower bounds of standard computer science problems including: searching, sorting, graph, string matching, polynomial, and matrix algorithms. Basic strategies for developing algorithmic solutions to problems using divide and conquer, dynamic programming, and greedy techniques will be covered. Introduction to nP-completeness problem will also be discussed. Prerequisites: A grade of a C or better in both MTH 1314 and CSC 2820 or consent of instructor.

*Four hours per week.*

**CSC 2820 Data Structures 4 cr.**

Basic concepts in the representation and manipulation of data. Topics include: data abstraction and classes, dynamic memory, linked lists, stacks, queues, trees, sorting techniques and graphs. Prerequisite: CSC 1610 with a minimum passing grade of C or consent of the instructor. Corequisite: MTH 1314. Satisfies the mathematics and science distribution requirement. *Four hours per week.*

**CSC 3320 Operating Systems 4 cr.**

This course will provide a clear description of the concepts that underlie any operating system. Topics discussed will include process management, input/output, memory management, the file system, protection and security, concurrency, and distributed systems. Examples drawn from UNIX and Microsoft Windows will be used. Programming projects will introduce students to system level programming. Prerequisite: A grade of a C or better in CSC 2820. *Four hours per week.*

**CSC 3335 Artificial Intelligence 4 cr.**

This course explores the concept of the thinking machine, capable of its own reasoning and extending itself beyond the limits of its programming. Core topics focus on extending a machine’s ability to search for its own solutions through the exploration of problem spaces and the use of reasoning through propositional and first-order logic. Advanced topics may include game theory, expert systems, machine learning, artificial life, and natural language understanding. Course time is also spent on discussing the impact of the idea of the thinking machine on philosophy, ethics, and society. Prerequisites: A grade of a C or better in both CSC 2820 and MTH 1314. *Four hours per week.*

**CSC 3500 Web Development II 4 cr.**

This course introduces the students to user-centered design. Topics include: cognitive principles (perception, memory, problem solving), understanding the users of a system, designing and developing effective interfaces, ergonomics, usability testing, and usability standards. Prerequisite: CSC 3950. *Four hours a week.*

**CSC 3555 Theory of Computation 4 cr.**

A study of the theoretical foundations of computer science and computability. Students will explore formal languages (regular and context free languages), their acceptance by finite state automata, and their description by regular expressions and context free grammars. Turing machines will be studied and the Church-Turing Thesis. The limitations of algorithmic computation will be examined. Students will apply theoretical concepts to concrete problems. Prerequisite: A grade of a C or better in both CSC 2710 and MTH 1314. *Four hours a week.*

**CSC 3725 / MTH 3725 Numerical Analysis 4 cr.**

Theory and application of selected topics from numerical analysis. Topics include: solutions of equations and systems of equations, interpolation, numerical differentiation and integration, and numerical solution of differential equations. Error bounds are treated. Emphasis given to methods that can be implemented on a computer. If time allows, other topics may be added such as least Squares and Eigen Values. Prerequisites: MTH 1218 and CSC 1610 or consent of the instructor. *Four hours per week.*

**CSC 3810 Database Principles 4 cr.**

The study of the concepts and structures necessary to design and implement a Database Management System (DBMS) focusing on modern relational database models. Data design and models will be examined. Topics include relational database models, database modeling concepts, schemas, normalization, DDL and DML (primarily SQL), file organizations, concurrency control, security controls, and object-oriented databases. Prerequisite A grade of a C or better in CSC 2620. *Four hours per week.*

**CSC 3875 System Administration, Privacy, Ethics, and Technology 4 cr.**

This course puts the student in ethical situations through hands on laboratory exercises and research. It also addresses specific privacy and ethical concerns that the average user may not be aware of in their day to day activities. In addition, this course also is an introduction to the linux operating system which will include the internals of how Linux boots, runs and operates; system administration tasks; monitoring system resources; kernel loadable modules; configuration settings, and understanding the desktop GUI. This is a required course for It majors, a major elective for EE Majors, and an open elective for all others. Prerequisites: EITHER CSC 4055 (Network Security) OR CSC/EEN 3935 (Data Networking). *Four hours lecture/lab a week.*

**CSC 3950 Web Development I 4 cr.**

An introduction to the programming tools and skills required to build and maintain web applications. Topics include: the World Wide Web, the HTTP protocol, Web standards, HTML and XHTML, CSS, client-side programming using Javascript, server-side programming using PHP, and database access through the Web. Prerequisite: A grade of a C or better in CSC 2620. *Four hours per week.*

**CSC 4720 (Formerly CSC 3720) Computer Architecture 4 cr.**

The course covers the analysis and design of the major elements of a digital computer. The specification of the interconnection of these elements to form a digital computer is also covered. This specification is accomplished with the aid of a special purpose register-transfer language (similar to a programming language). Control of the register-transfer sequence is treated from both the hardwired and microprogrammed viewpoints. Interrupts and I/O are treated. The MIPS assembly language will also be covered throughout the course. Prerequisite: CSC 1610, EEN 1200 with a minimum passing grade of C in both classes.

*Four hours per week.*

**CSC 4805 Directed Study 2 cr.**

Qualified students may propose a course of individual study and work to be conducted under the direction of a faulty member. May be taken more than once. Prerequisite: Consent of the instructor with approval of department.

**CSC 4815 Directed Study, Special Projects 4 cr.**

Qualified students may propose a course of individual study and work to be conducted under the direction of a faulty member. May be taken more than once. Prerequisite: Consent of the instructor with approval of department.

**CSC 4905 Computer Science Seminar 4 cr.**

Special topics class.

**CSC 4910 (W) Software Engineering 4 cr.**

An in-depth study of the methodologies involved in designing, developing, and maintaining software systems, particularly large systems with multiple developers who must cooperate effectively to produce a quality product. Core topics include requirements analysis, specification, user interface design, software design, testing, implementation and maintenance. The major focus of the course is a semester-long project where the students work in software development teams to produce a small software system using object- oriented analysis and design methods. This course serves as a capstone experience calling on a variety of knowledge and skills and involving significant practice in professional writing in both collaborative and individual environments for different audiences: the team, the manager, the client, and the user. Prerequisites: A grade of a C or better in CSC 2620 and CSC 2820, and JR or SR standing *Four hours per week.*

**CSC 4920(W) Information Technology Systems 4 cr.**

A capstone course for Information Technology majors that focuses on a semester-long experience exploring the process by which information technology systems are selected, researched, implemented, and maintained. Students will work in teams to create and support a complete system that addresses a concrete problem. Threaded throughout this experience is an emphasis on professional conduct, skills, and both written and oral communication - with a client, with a team, with superiors, and with end-users. Prerequisite: A grade of a C or better in CSC 2620, and JR or SR standing. *Four hours per week.*

**CSC 5055 (Formerly CSC4055) Computer and Network Security 4 cr.**

This course is a survey on network and computer security technology. all of the basic building blocks of network security, including access control, intrusion prevention, malicious software, conventional and public key cryptography, authentication, digital signature, and many of the techniques used to protect computers will be covered. Prerequisites: A grade of a C or better in CSC 1610 and JR Standing. *Four hours per week.*

**CSC 5120 (Formerly CSC 3120) Programming Language Principles 4 cr.**

This course explores the underlying nature of computer programming languages and how they are processed. Topics include language syntax and semantics, parsing, variable binding and scope, functions and parameter passing, control flow, recursion, and data types. Alternative paradigms of programming, including functional languages and scripting languages, will be explored in case studies, labs, and regular programming assignments. Prerequisite: A grade of a C or better in CSC 2820. *Four hours per week.*

**CSC5210 Computer Graphics 4 cr.**

This course explores the mathematical tools, data structures, algorithms, and hardware associated with the generation of 2D imagery and 3D scenes on the computer. Topics include OpenGL programming, 3D geometric transformations, cameras, shading, texture mapping, modelling, surfaces, terrain, and viewing and visible surface determination. Advanced topics, such as rendering, shadows, shaders, and simulation are covered as time permits. The course includes several significantly scoped programming projects. Prerequisite: A grade of a C or better in CSC 2620 and CSC 2820. A strong math background is required. *Four hours a week.*

**CSC 5925 (Formerly CSC 3925) Data Communications 4 cr.**

An introduction to the fundamentals of data communications for the computer scientists. Topics include asynchronous and synchronous transmission, analog and digital transmission of data, modulation and demodulation, multiplexing, transmission median, common carriers, communication devices, error control and recovery, message switching, packet switching, LANS, polling techniques, protocols, distributed data processing, High Speed LANS, network Security, Spread Spectrum, and Cellular Wireless networks. Prerequisites: A grade of a C or better in CSC 1610 and Junior standing. *Four hours per week.*

**CSC 5935/EEN 3935 (Formerly CSC 3935) Data Networking 4 cr.**

The Internet is the mainstream pathway for data communications today. The major components studied include both the hardware elements: hubs, switches, bridges, and routers and the major software elements: Five layer TCP/IP stack. The student will learn about all of these in detail during class and laboratory assignments. Prerequisite: CSC 3925. *Four hours per week.*

**CSC 6010 Theory of Computation II 4 cr.**

This continuation of CSC 3555, Theory of Computation, will explore the ideas of computability and complexity in more detail. The course will cover the topics of Turing Machines and other advanced models of computation (circuit model, oracle machines, alternating machines); complexity classes including: PSPACE, P, NP, coNP, L, #P, RP, BPP, IP, AC, and AC0; and the polynomial hierarchy. Students will be expected to develop thorough proof-writing, reduction, and computational techniques, tested through regular quizzes and homework assignments.

**CSC 6020 Advanced Operating Systems**

This course is an introduction to Operating Systems at the graduate level. Topics discussed will include in depth discussions of: process management, input/output, memory management, the file system, protection and security, concurrency, distributed systems, and system virtualization. Course will require significant systems programming in the POSIX operating system model. Examples will be drawn from enterprise class operating systems. Four hours a week.

**CSC 6030 Analysis of Algorithms II cr.**

This course provides an exploration of advanced algorithms in terms of design, efficiency analysis, and implementation. It includes an in-depth look at networks and flows, dynamic and genetic algorithms, approximation algorithms, amortized analysis, linear and integer programming, computational geometry, and other advanced topics as time allows.

**CSC 6120 Network Security II 4 cr.**

This course focuses on the systematic development and analysis of network security protocols. Topics include: advanced study of authentication protocols, advanced key agreement protocols, anonymity protocols, designing security protocols, adversarial modeling, and an analysis techniques. Analysis techniques may include: Strand Spaces, BAN Logic, and the Applied π-Calculus. Readings will be drawn from the literature.

**CSC 6100 Cryptography 4 cr. **

This course is an introduction to modern cryptography at the graduate level. Topics will include a rigorous treatment of fundamental primitives including: theoretical and applied aspects of symmetric and asymmetric cryptography with associated security models, message authentication codes, stream ciphers, cryptographic hashing, and digital signatures. In addition, cryptographic protocols will also be studied. Necessary mathematics will be introduced as needed, though a strong background in mathematics is recommended.