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
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.
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.
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.
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.
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.
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.
Introduces students to topics in networking theory such as protocols, protocol stacks, encryption and security. Basic network troubleshooting and administration will also be covered.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Analysis of electrical networks incorporating passive elements. Topics include Ohm's Law, Kirchhoff' Laws, and techniques of circuit analysis.
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.
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.
Intended for computer science majors. Topics include: troubleshooting, problem solving and maintaining network hardware and software.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Continues the study of circuit design. Covers topics including linear power converters, Field Effect Transistors, switching converters, charge pumps, and Pulse Width Modulation.
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.
Teaches the fundamentals of control systems. Topics include proportional controllers, PID controllers, and noise.
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.
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.
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.
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.
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.
Prepares students for work in industry. This course introduces students to modern tools and approaches that will allow them to design professional quality software.
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.
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.
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.
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.
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.