Academic Catalog

Computer Science and Information Systems

(413) 662-5595
www.mcla.edu/csci
Chairperson: David Eve, Ed.D.
Email: D.Eve@mcla.edu

Computer Science Major

The Department of Computer Science offers a four-year program leading to a Bachelor of Science in Computer Science, with one of five concentrations. Students majoring in other departments may complete a computer science minor for the following concentrations: business information systems, electrical engineering, information and technology, or software development.

Computer science encompasses a broad range of computing and communications technologies that are used for the development of business, commerce, robotics, entertainment, educational, medical and information system products. The dependence on modern computer systems has created a growing demand for software developers who can meet the needs of businesses and consumers. The application of these technologies now stretches from the factory floor to the office, boardroom and home. Current products range from standalone applications to fully distributed networked systems, and are made possible by the concepts of object oriented programming and design.

Career opportunities for graduates with these skills exist both in Internet companies and in more traditional companies that have a need for distributed systems of networked computers and software systems. Recent graduates have found employment with Internet startup companies, the insurance industry, communications companies and government contractors. The major program is designed to provide students with a strong grounding in several areas.

Students graduating with a major in Computer Science will be able to:

  • Develop and maintain professional quality software applications, products, and systems;
  • Competently use major software applications found in industry;
  • Communicate ideas effectively with others;
  • Create and maintain hardware systems.

Computer Science Programs

Students majoring in Computer Science must select one of the following concentrations: Information Technology or Software Development.

Computer Science Courses

CSCI 101 First Year Computer Science Seminar3 cr

Introduces students to the skills needed to navigate the computer science concentrations. In addition, Computer Science majors are introduced to various topics used throughout the curriculum. Topics include computer hardware, operating systems, file types, protocols, and networking.

CSCI 110 Electrical Engineering Principles3 cr

Provides students with an understanding of topics in the CSCI Electrical Engineering Concentration, and reinforces students' problem-solving skills using foundational tools from mathematics and physics. Topics include conversion of units, linear equations, complex numbers, vectors, and wave functions, at the instructor's discretion.

CSCI 120 Programming in Python3 cr

Introduces students to the Python programming language. This course is intended for students who have no experience in programming, but do show a passion for problem solving. Throughout the semester, problem solving skills will be stressed and applied to solving computing problems.

CSCI 121 Programming in Java I3 cr

Introduces the concepts of program development using the Java programming language. Topics include variables, control structures, arrays, string manipulation and an introduction to object oriented concepts.

CSCI 122 Programming in Java II3 cr

Continues the study of object oriented programming and the Java language. Topics include file manipulation, method and class definitions, graphic applications, applets, multimedia, events and interfaces.

Prerequisite: CSCI 121  
CSCI 208 Graphics I3 cr

Provides a broad overview of computer graphics. Students will use proprietary and open source software to integrate images and text. The course includes demonstrations, lectures, presentations and hands-on projects. It is expected that students will have access to a digital camera and that students will work with their own images.

CSCI 210 Networking Theory and Administration I3 cr

Introduces students to topics in networking theory such as protocols, protocol stacks, encryption and security. Basic network troubleshooting and administration will also be covered.

CSCI 211 Networking Theory and Administration II3 cr

Introduces students to advanced topics in networking theory such as flow control and congestion control algorithms, routing algorithms, multiple access algorithms, and error detection and correction algorithms. Advanced troubleshooting and network administration will be covered.

Prerequisite: CSCI 210  
CSCI 221 Programming in Java III3 cr

Continues the study of object oriented programming and the Java language. This course focuses on the development of graphical user interfaces and animated simulations and games using object oriented programming techniques.

Prerequisite: CSCI 122  
CSCI 222 Programming in Java IV3 cr

Continues the study of object-oriented programming and the Java language. Topics include advanced data structures, input and output streams and serialization, multithreading, networking and object-oriented design methodology.

Prerequisite: CSCI 221  
CSCI 235 Digital Circuit Design3 cr

Introduces the fundamental concepts involved in the analysis and design of digital logic circuits. Topics include number systems, Boolean algebra, logic minimization, and combinational and sequential circuits. Students design, implement, test and debug digital systems.

CSCI 236 Web Development3 cr

Emphasizes the client side tools and techniques used to develop web applications. Topics include Java Script, XHTML, cascading style sheets, file transfer protocol and browser compatibility. The course will also discuss effective web page design considerations, including usability, accessibility and information design.

CSCI 240 Introduction to Robotics3 cr

Introduces the student to the field of robotics. Students work in teams to build a small robot and program it to perform various tasks. Additionally, the course will discuss the essential elements of robotic systems, including motors, sensors, physical design and control.

CSCI 243 Database Development3 cr

Introduces the design, management and programming of database systems. This course focuses on the design of database systems using the SQL language, and will provide hands-on experience with one or more database management system products. It also examines the role of a database administrator.

CSCI 246 Programming in C#3 cr

Introduces the concepts of program development using the C# programming language. This course focuses on an introduction to the Visual Studio development environment, simple variables, control structures, and an introduction to object-oriented concepts.

CSCI 247 Introductory Topics in Computing3 cr

Provides an understanding of a topic in computing that may be of interest to majors or non-majors. This course introduces a topic that is not currently part of the department curriculum. Depending on the specific topic, students will demonstrate mastery of course content through programs, papers, and/or portfolio development.

Repeatable: Unlimited Credits  
CSCI 248 Programming in C# II3 cr

Continues the study of program development using the C# programming language. Intended for business information majors, this course focuses on advanced C# concepts including structured variables, additional control structures, object creation, code reuse and dynamic storage allocation.

Prerequisite: CSCI 246  
CSCI 271 Electric Circuit Design I3 cr

Analysis of electrical networks incorporating passive elements. Topics include Ohm's Law, Kirchhoff' Laws, and techniques of circuit analysis.

Prerequisite: CSCI 110  
CSCI 272 Electric Circuit Design II3 cr

Continues passive circuit elements and introduces the students to active components. Topics include Bipolar Junction Transistors, forced response of linear circuits, Operational Amplifiers, and biasing.

Prerequisite: CSCI 271  
CSCI 288 Web Page Design3 cr

Introduces the study of web page design using contemporary design tools and development environments. Intended for non-computer science majors, the course takes a creative approach to web design that is facilitated by a good working knowledge of technical skills. Course explores theoretical, aesthetic and technical perspectives of effective web page design. Upon completion, students will be able to employ design techniques to create beautiful and highly functional web pages.

CSCI 302 Computer Triage3 cr

Intended for computer science majors. Topics include: troubleshooting, problem solving and maintaining network hardware and software.

Prerequisite: CSCI 101  
CSCI 308 Graphics II3 cr

Builds on CSCI 208 and provides a broad overview of 3-D computer graphics. Students will use proprietary and open source software to create and render three-dimensional objects and scenes. The course includes demonstrations, lectures, presentations and many "hands-on" projects.

Prerequisite: CSCI 208  
CSCI 318 Computer Organization and Assembly Language3 cr

Introduces students to the major hardware components of a computer system and to the organization of computers as a hierarchy of hardware and software. Considers the basic functional units of a computer system and then examines the following levels: digital logic, microprogramming, conventional machine language, operating system and assembly languages.

Prerequisite: CSCI 235  
CSCI 328 Object Oriented Design3 cr

Investigates system design using the standard object oriented design methodology. The Unified Modeling Language (UML) is covered extensively, as are the tools and diagrams associated with it. The course incorporates the use of software design tools and applications used in industry.

Prerequisite: CSCI 122  
CSCI 330 Programming in C++3 cr

Applies programming concepts to the C++ language. This course is intended for students who have studied another object-oriented programming language for at least two semesters. Topics include C++ syntax, data structures, libraries, graphics and GUI applications.

Prerequisite: CSCI 121  
CSCI 332 Systems Analysis and Design3 cr

Introduces the students to Systems Analysis and Design. This is a hands-on course in which students learn and apply information gathering techniques, systems analysis techniques, systems design techniques and process, as well as systems implementation. Working as teams, students will analyze, design, and develop portions of a computer based information system.

Prerequisite: CSCI 243  
CSCI 336 Advanced Web Development3 cr

Continues the study of World Wide Web application development. This course emphasizes both client-side and server-side tools and techniques used to develop web applications, and will include various scripting languages.

Prerequisite: CSCI 236  
CSCI 340 Robotics Development3 cr

Introduces the student to various development areas associated with robotics. Topics include motors, motor control, sensors, microcontrollers, physical design, basic analog and digital circuit theory, software design, interfacing and artificial intelligence. Students will construct a robot or robotic system and choose to focus on one or more of these areas. This course may be repeated for a maximum of 9 credits.

Prerequisite: CSCI 122, or CSCI 235, or CSCI 240, or PHYS 251  
Repeatable: Maximum of 9 credits  
CSCI 343 Full Stack Development3 cr

Focuses on the development of web-based applications. This course merges the concepts learned in Web Development and Database Development to form traditional persistent multi-tiered web-based systems.

Prerequisite: CSCI 121, CSCI 336, CSCI 243  
CSCI 346 Programming in Visual Studio3 cr

Applies programming concepts to the languages found in the Visual Studio programming environment. This course is intended for students who have studied another programming language. Topics include syntax, data structures, graphics and GUI applications in a Windows environment.

Prerequisite: CSCI 121 or CSCI 246  
CSCI 347 Intermediate Topics in Computing3 cr

Provides in-depth study of a topic introduced in an earlier course. Depending on the specific topic, students will demonstrate mastery of course content through programs, papers and/or portfolio development.

Prerequisite: Department approval  
Repeatable: Unlimited Credits  
CSCI 350 Introduction to Parallel Computing3 cr

Introduces parallel computing methods for both distributed memory and shared memory architectures. In this course, students will learn how to design and implement parallel algorithms for solving classic computer science problems, and analyze their performance. This course covers several parallel programming techniques such as Open MPI, POSIX Threads, Open MP, and Java Threads.

Prerequisite: CSCI 122  
CSCI 352 Business Information Systems3 cr

Provides an examination of business information systems that apply to all strata of organizations. The course will view organizations as information systems and demonstrate how computers are integrated in these organizations. Students will engage in service learning projects and gain practical experience off-campus, solving real problems for various companies.

Prerequisite: CSCI 332  
CSCI 360 Network Security I3 cr

Examines client based/end user security. This course is intended for computer science majors. Topics include: identification, prevention and recovery from security vulnerabilities and threats to PCs, tablets and mobile devices.

Prerequisite: CSCI 210  
CSCI 361 Data Structures and Algorithms3 cr

Introduces fundamental data structures such as stacks, queues, dictionaries, trees, and graphs. This course also covers the development and analysis of algorithms that sort, search, traverse, and divide and conquer. Algorithm analysis techniques covered include the RAM model of computation, best-case, worst-case, and average-case complexity. Students will implement data structures and algorithms using a contemporary programming language and serial and parallel programming techniques.

Prerequisite: CSCI 122  
CSCI 362 Operating Systems3 cr

Students learn about and implement the fundamental principles used by operating systems to manage processes, memory, storage, and security. In addition, case studies will be introduced to explore the implementation of at least two modern operating systems.

Prerequisite: CSCI 361  
CSCI 363 Network Security II3 cr

Continues CSCI 360, Network Security I and examines networked systems security. This course is intended for computer science majors. Topics include: identification, prevention and recovery for security vulnerabilities and threats to network data and networked resources.

Prerequisite: CSCI 360  
CSCI 371 Advanced Circuit Design3 cr

Continues the study of circuit design. Covers topics including linear power converters, Field Effect Transistors, switching converters, charge pumps, and Pulse Width Modulation.

Prerequisite: CSCI 272  
CSCI 373 Electronic Fabrication3 cr

Introduces the student to the many skills that are required to create new electronic devices. Topics include soldering, enclosure design, circuit board design, mounting, and physical interfaces.

Prerequisite: CSCI 371  
CSCI 374 Control Systems3 cr

Teaches the fundamentals of control systems. Topics include proportional controllers, PID controllers, and noise.

Prerequisite: MATH 320  
CSCI 390 Junior Seminar1 cr

Ensures that students are prepared for their senior year of study in Computer Science. Students attend class for one hour each week to review material from the lower level courses in the program, (100 and 200 level). Near the end of the semester, each student will take a multi-part exam, which must be passed to continue on.

Prerequisite: Computer Science junior status  
CSCI 408 Graphics III3 cr

Explores the history of CG animation and produces an animation short using a 3-D graphics program. Students will build on their skills developed in CSCI 208 and CSCI 308 and, working in teams, develop, refine and build a computer generated short animation.

Prerequisite: CSCI 308  
CSCI 420 Bioinformatics3 cr

Introduces the fundamental algorithms used in bioinformatics and how these algorithms can be used to solve biological problems. In this class, students will learn how bioinformatics algorithms work, as well as how to obtain sequence data from scientific databases and analyze these data using tools available on the MCLA high-performance computer.

Prerequisite: CSCI 243, BIOL 240 and junior/senior status  
CSCI 441 Teaching Assistant in Computer Science3 cr

Assigns students to assist a member of the computer science faculty. Students will be involved in developing materials for class, giving workshops and help sessions, and evaluating computer science projects. A member of the computer science faculty will coordinate, counsel and evaluate students enrolled in the course.

Prerequisite: Department approval  
Repeatable: Maximum of 6 credits  
CSCI 447 Advanced Topics in Computing3 cr

Provides advanced study of a topic introduced in an earlier course. Depending on the specific topic, students will demonstrate mastery of course content through programs, papers and/or portfolio development.

Prerequisite: Department approval  
Repeatable: Unlimited Credits  
CSCI 452 Software Engineering3 cr

Prepares students for work in industry. This course introduces students to modern tools and approaches that will allow them to design professional quality software.

Prerequisite: CSCI 343, CSCI 390  
CSCI 461 Senior Project3 cr

Applying skills and knowledge developed as part of their computer science concentration, students plan, design, develop, deliver, and present a substantial professional quality project of their choosing. Over the course of the semester, students will work closely with a faculty advisor during all stages of their project development.

Prerequisite: Computer Science senior status  
CSCI 462 Senior Seminar1 cr

Prepares students for their final semester and employment thereafter in the following ways: It is writing intensive, and it prepares students for the job search process through the development of their resumes, learning portfolio, job search strategy, and interviewing skills.

Prerequisite: Computer Science senior status  
CSCI 475 Communication Systems3 cr

Introduces the students to the design and analysis of electronic communications equipment. Topics include communication of information over noisy channels. Amplitude, phase, and frequency modulation. Random process and analysis of communication systems in noise, and elements of digital communication systems.

Prerequisite: MATH 320  
CSCI 500 Independent Study1-3 cr

Designed for students who wish to undertake an in-depth examination of some topic of interest. The project will be carried out under the direction of a computer science faculty sponsor.

Prerequisite: Junior/senior status, department approval  
Repeatable: Maximum of 12 credits  
CSCI 540 Internship in Computer Science3-12 cr

Open to juniors and seniors who would like to gain practical field experience in the computer industry. The intern will work under close supervision of both industry and department personnel.

Prerequisite: CSCI 222, or junior/senior status  
Repeatable: Maximum of 15 credits