Academic Catalog

Department of Computer Science

Bachelor of Arts, Bachelor of Science

Ali Erkan, Associate Professor and Chairperson


From scientific research to business, from entertainment to health care, computing technology provides the structure and tools for living and working in the contemporary world. The majors and the minor offered by the computer science department are designed to equip students with the knowledge, problem-solving abilities, and technical skills to design and create this technology for the 21st century. All courses in the department introduce real-life problems and emphasize both practical software development and fundamental concepts, so that students can understand and adapt to continually evolving technology.

The computer science degrees combine breadth in theoretical and practical computer science with depth in specialized areas. In addition to coursework, students are encouraged to gain software development and problem-solving skills by working with faculty on projects and research both during the academic year and through funded summer programs.

Majors in Computer Science

The department offers two majors, a B.A. and a B.S. in computer science. Both majors are designed to support students to achieve mastery of the discipline.

  • Both majors cover the fundamental concepts of computing and develop the problem-solving skills needed to create computer-based solutions across all disciplines.
  • Both majors emphasize the challenges in human-computer interactions and the design skills necessary to make technology both approachable and useful for humans.
  • Both majors prepare students for a career in industry or for graduate school.

The two majors are structured differently to accommodate students with different academic goals:

  • the B.S. places a greater emphasis on software development and computer organization;
  • the B.A. affords a greater degree of academic exploration by requiring fewer credits.

Minor in computer science

The computer science minor is appropriate for students in any major, from history to business, from physical therapy to journalism. The minor empowers students to be quantitatively competent and technologically proficient in their own disciplines.

Areas of Focus

Students may choose to focus their study in the broad field of computer science through careful selection of clusters of related courses that allow them both to gain expertise in particular subfields within computer science, and also prepare for corresponding career opportunities. Specific areas of focus that the department supports include:

  • Application development — courses include web and mobile app development and programming languages;
  • Artificial Intelligence/Machine Learning — courses combine additional study in mathematics with study of intelligent systems and machine learning;
  • Data and Infrastructure — deeper study of networks, languages, and databases;
  • Systems — deeper study of networks, languages, and databases.

Students are expected to have extensive discussions with their advisors to understand each of these areas in order to select courses that will work best for their goals. More information on these “areas of focus” can be found on the department’s web page.

Advanced Placement

Students can receive credit and advanced placement in COMP 17100 with a grade of 4 or 5 on the College Board Advanced Placement examination, Computer Science A only.

MINIMUM GRADE FOR PREREQUISITES

A grade of C or better is required for a course in computer science to fulfill a prerequisite for another computer science course.

COMP 10500 Introduction to Website Development (LA)

Introduction to the design and construction of responsive interactive websites using current technologies and tools. The course covers principles of effective website design, the design process, and implementation techniques. A term project building a large interactive, mobile-ready website is required. Students who have completed or are taking COMP 20500 may not receive credit for this course. (F,S,Y)
Attributes: CA, CCCS, ESTS, MC, NS, TWOS
3 Credits

COMP 10600 Multimedia Programming (LA)

Fundamental concepts and skills in media programming are covered through design and development of interactive, multimedia websites and applications. Assignments include hands-on projects built using text, images, video, audio, animation, and interactivity. (F,S,Y)
Attributes: CA, CCCS, ESTS, NS, TIII
3 Credits

COMP 10700 Introduction to 2D Game Development (LA)

An introduction to the design, development, and implementation of two-dimensional (2-D) games. Topics to be covered will include principles of designing games and the computational methods and tools used to create game content. Some programming will be introduced, but no prior computing experience is needed. Students will also learn the basic principles of project management and teamwork. Concepts will be put into practice as teams design and develop their own 2-D game. The course will be a combination of lectures and hands-on exercises. (F,Y)
Attributes: 2B, CA, MC, NS, TIII
4 Credits

COMP 11000 Computers and Information Technologies (LA)

Develops student expertise in the use of a computer and the major software tools used for personal and professional productivity, with an emphasis placed on spreadsheets and database management systems. Includes an introduction to the components of a computer system and to social and ethical issues surrounding the use of a computer. Students may receive credit for only one of the following courses: COMP 11000, HLTH 13901, EXSS 13900. Students who have already taken COMP 20100 cannot receive credit for this course. (F,S,Y)
Attributes: 2B, NS, QL
3 Credits

COMP 11500 Discrete Structures for Computer Science (LA)

An introduction to discrete structures for computer science. The major topics of study include sets, proof techniques, logic, predicate logic, relations and functions, counting and probability, matrices, and induction. Prerequisites: COMP 17100. (S,Y)
Attributes: 2B, NS
4 Credits

COMP 12200 Introduction to Robotics Using Legos (LA)

This course introduces students to robotics and programming using Legos. Students will build various type of robotic objects incorporating output devices such as motors and lights as well as sensor input devices such as touch sensors, light sensors, sonar sensors, and rotation sensors. The emphasis is on hands-on labs. Programs to control and robots will be developed using an object-oriented language such as Java or C++ and cover the basic object-oriented concepts. Engineering concepts involving the use of gears will be briefly explored. The emphasis is hands-on labs along with presentations and demonstrations. This course is designed for students who have little or no previous programming experience. The course may not be taken for credit after COMP 22000 or COMP 22500. (IRR)
Attributes: 2B, NS
3 Credits

COMP 12400 Geographical Information Systems (LA)

Exploration of analytical and computational concepts and skills necessary to create, manipulate, analyze, visualize, and manage spatial databases. Skill-development in using a geographic information system (GIS) in a computer laboratory. Prerequisite: WRTG 10600, ICSM 108xx or ICSM 118xx. (F,Y)
Attributes: CCCS, ESTS, NS, WI
3 Credits

COMP 17000-17001 Introductory Computer Project (NLA)

Student undertakes a project to design and implement a computer application under the guidance of one or more faculty members. May be repeated for a total of Prerequisites: Permission of the computer science faculty. (F,S,Y)
1-3 Credits

COMP 17100 Principles of Computing Science I (LA)

A disciplined introduction to problem-solving methods and program development. Topics include standard control structures, basic data structures, algorithms and abstraction mechanisms, testing, and an introduction to algorithm analysis. (F-S,Y)
Attributes: 2B, NS
4 Credits

COMP 17200 Principles of Computer Science II (LA)

This course reinforces and strengthens the foundational concepts learned in Computer Science I and provides additional experience with problem solving and algorithmic thinking independent of the programming language used. It provides the requisite skills needed by majors and minors to successfully progress in Computer Science. The course is a combination of lectures, in-class exercises, and labs, with a strong hands-on approach. Prerequisite: COMP 17100 with a grade of C or better. (F,S,Y)
Attributes: NS
4 Credits

COMP 17900 Topics: Computer Languages (LA)

The syntax, data structures, and distinctive features of a specific programming language chosen from those not given detailed coverage in any regularly offered computer science course. Programming assignments develop students' skills in the language and illustrate typical applications. Possible languages include C++, LISP, and PROLOG. Restricted to students who have not already taken a course treating in detail the language offered by this course. May be repeated for credit with different languages. Prerequisite: COMP 17100 with a grade of C or better. (IRR)
Attributes: UND
1 Credit

COMP 19000 Selected Topics in Computer Science (LA)

Topics to be determined by the instructor and the Department of Computer Science. May be repeated for credit for selected topics on different subjects. (IRR)
Attributes: NS
1-4 Credits

COMP 19200 Independent Study in Computer Science (LA)

Enrichment and extension of the regular curriculum to areas not covered in existing courses. Arranged individually between student and faculty sponsor according to guidelines available from the department. (IRR)
Attributes: UND
1-4 Credits

COMP 20200 Computational Foundation of Emerging Media (LA)

Introduction to the concepts, tools, and computational methods underlying the most popular forms of emerging media. Topics include existing software tools for design, development, and analysis of emerging media and the computational methods and concepts underpinning both the tools and the media itself. Hands-on exercises in programming, scripting, and using a variety of software packages. Prerequisites: COMP 17100. (S, Y)
Attributes: NS
4 Credits

COMP 20500 Advanced Web Programming (LA)

Introduction to the creation of interactive and dynamic web pages. Students study the technologies and concepts necessary to add interactive scripts to web pages (client-side programming), receive and supply information to web pages (server-side programming using scripting), and store information (database creation). Prerequisites: COMP 17200 with a grade of C or better. (F,Y)
Attributes: CCCS, NS
4 Credits

COMP 20700 Game Development and Technologies (LA)

Covers the methods and technologies used to implement and test video games, with an emphasis on the software design and development, prototyping, and testing phases. Additionally, students are introduced to the various technologies (graphics, artificial intelligence, game physics, audio, and networking) and software tools used by game developers. This course may not be counted toward a computer science major. Prerequisites: COMP 10700 or COMP 17100 with a grade of C or better. (S,Y)
Attributes: NS
4 Credits

COMP 21000 Introduction to Computer Organization and Systems (LA)

Computer structure and organization. Investigation of operating systems, including processes, memory management, and file systems. Prerequisites: COMP 22000 with a grade of C or better. (S,Y)
Attributes: NS
4 Credits

COMP 22000 Introduction to Data Structures (LA)

This course covers basic data structures, including stacks, queues, trees, and graphs. Fundamental algorithmic techniques, such as sorting and searching, are also covered. Prerequisites: COMP 17200 with a grade of C or better; COMP 11500 (with a grade of C or better) or MATH 11100 (may be taken concurrently). (F,Y)
Attributes: NS
4 Credits

COMP 27000-27001 Intermediate Computer Project (NLA)

Students undertake a project to design and implement a substantial computer application under the guidance of one or more faculty members. Permission of the computer science faculty required. May be repeated for a total of six credits. (F,S,Y)
1-3 Credits

COMP 29000 Selected Topics in Computer Science (LA)

Topics to be determined by the instructor and the Department of Computer Science. May be repeated for credit for selected topics on different subjects. (IRR)
Attributes: NS
1-4 Credits

COMP 29200 Independent Study in Computer Science (LA)

Enrichment and extension of the regular curriculum to areas not covered in existing courses. Arranged individually between student and faculty sponsor according to guidelines available from the department. (IRR)
Attributes: UND
1-4 Credits

COMP 30600 Mobile Development (LA)

Study of the basic concepts involved in developing applications for mobile devices including phones and tablets. Topics include Model-View-Controller architectures, user-interface design, multi-view applications, animation, threads, touch gestures, accessing sensors, and databases. The course includes practical experience through a semester-long team project to design and implement a mobile app. Prerequisites: COMP 22000 with a grade of C or better. (F,E)
4 Credits

COMP 31000 Implementation of Computer Operating Systems (LA)

In-depth investigation of the major concepts, algorithms, and implementation principles of computer operating systems. Both theoretical and practical aspects of operating systems are considered; students undertake substantial programming projects to illustrate concepts. Topics include scheduling; resource and storage allocation; problems of resolving deadlock, exclusion, and synchronization; memory allocation; secondary storage implementation; and distributed system structures. Prerequisites: COMP 21000 with a grade of C or better. (IRR)
Attributes: NS
4 Credits

COMP 31100 Algorithms and Data Structures (LA)

Analysis of major algorithms and data structures for primary memory. Data structures include graphs, dynamic hash tables, and balanced tree structures. Other major topics are algorithm design techniques (greedy method, divide/decrease and conquer, recursion and dynamic programming, branch and bound, and approximation algorithms). Prerequisites: COMP 22000 and COMP 11500 with a grade of C or better. (S,Y)
Attributes: NS
4 Credits

COMP 32100 Programming Languages (LA)

An intermediate-level course in programming language constructs, including design issues, paradigms and corresponding machine models, language constructs, syntax, and semantics. Includes a survey of actual programming languages representative of common paradigms, critically comparing the design choices and features unique to each. Algorithmic, functional, and logical languages are considered. Prerequisites: COMP 21000 and COMP 22000 with a grade of C or better. (F,Y)
Attributes: NS
4 Credits

COMP 32500 HCI: User Interface Design and Development (LA)

This course presents the fundamental concepts of design, prototyping, evaluation, and implementation of user interfaces (UIs), which are part of the field of HCI (human-computer interaction). Topics of study include user-centered design, task analysis, prototyping, interface design principles, user testing, interface metaphors, windows and event-driven programming, and heuristic evaluation. Principles of human perception and cognition are applied to user interface design. Web interface designs and three-dimensional user interfaces are also studied. Prerequisites: COMP 17200 with a grade of C or better and COMP 20500 or COMP 20700 or COMP 22000 with a grade of C or better. (S,Y)
Attributes: NS
4 Credits

COMP 33000 Introduction to Virtual Reality (LA)

This course introduces the fundamental concepts of virtual reality (VR), with an emphasis on the interdisciplinary nature of VR system development and applications. Topics include survey and analysis of VR hardware, software, and methodologies; advanced topics in computer graphics; interaction and navigation within VR; simulation and behaviors in virtual worlds; human perception; and applications of VR. The course includes hands-on experience with VR hardware and software. Prerequisites: COMP 20700 or COMP 22000 with a grade of C or better. (F,E)
Attributes: NS
4 Credits

COMP 34500 Introduction to Software Engineering (LA)

An introduction to the software development process, focusing on analysis, design, programming, and testing of a medium-scale team project. Object-oriented software engineering practices are discussed, with an emphasis on the unified process, use case-based design, and the unified modeling language (UML). Testing, risk analysis, and design patterns are also addressed. Prerequisites: COMP 22000 with a grade of C or better. (S,Y)
Attributes: NS
4 Credits

COMP 35400 Intelligent Systems (LA)

Explores key concepts of intelligent systems, including knowledge-based search techniques; automatic deduction, knowledge representation using predicate logic, and machine learning. Selected applications of artificial intelligence, such as problem solving, data mining, game playing, expert systems, planning, natural language understanding, and computer vision. Requires implementation of a significant intelligent software system. Prerequisites: COMP 22000 with a grade of C or better. (S,E)
Attributes: NS
4 Credits

COMP 36500 Computer Networks (LA)

Basic concepts of computer networks and data communications. The major topics include transmission media, error detection, routing, client-server models, remote execution, and encryption. Includes a discussion of characteristics of local and wide area networks, heterogeneous networks, and case studies of current networks. This course contains a laboratory component that includes topics such as network configuration, topologies and protocols, and installation of networks. Prerequisites: COMP 11500 and COMP 21000 with a grade of C or better. (F,O)
Attributes: NS
4 Credits

COMP 37000-37001 Intermediate II Computer Project (NLA)

After consultation with the computer science faculty, the student undertakes a project to design and implement a substantial computer application under the guidance of one or more faculty members. Permission of the computer science faculty required. May be repeated for a total of six credits. (F,S,Y)
1-3 Credits

COMP 37500 Database Systems (LA)

Study of the basic concepts involved in database systems, including database architecture, data models, database design, and query techniques. The course includes practical experience through a semester-long team project to design and implement a database and related applications using SQL. Prerequisites: COMP 17100; COMP 20500 or COMP 22000 or COMP 22500 all with a grade of C or better. (F,E)
Attributes: NS
4 Credits

COMP 38500 Emerging Media Project (NLA)

Hands-on introduction to project design, development, implementation, and testing, with emphasis on the knowledge and skills required to successfully complete the production cycle, including team dynamics, market analysis, project management, documentation, and testing. Students work in teams on projects assigned by the instructor. Cross-listed with TVR 38500; students cannot receive credit for both COMP 38500 and TVR 38500. Open only to emerging media majors. Prerequisites: COMP 20200; junior standing. (F-S, Y)
4 Credits

COMP 39000 Selected Topics in Computer Science (LA)

Topics to be determined by the instructor and the Department of Computer Science. May be repeated for credit for selected topics on different subjects. (IRR)
Attributes: NS
1-4 Credits

COMP 39200 Independent Study in Computer Science (LA)

Enrichment and extension of the regular curriculum to areas not covered in existing courses. Arranged individually between student and faculty sponsor according to guidelines available from the department. (IRR)
Attributes: UND
1-4 Credits

COMP 41000 Algorithms + Organization = Systems (LA)

In-depth investigation of the major concepts and implementation principles of computer systems (operating systems, networks, databases, etc.) through the exploration of seminal algorithms used in systems. Students read research papers and conduct experiments on algorithms in a systems environment. Topics may include scheduling, resource and storage allocation, problems of resolving deadlock, exclusion, and synchronization, memory allocation, secondary storage implementation, distributed system structures, switching, and IP addressing. Prerequisites: COMP 21000 and COMP 31100 both with a grade of C or better. (F,O)
4 Credits

COMP 41500 Computer Graphics (LA)

An introduction to the fundamentals of computer graphics, including the mathematical foundations of graphics techniques; 2D and 3D algorithms for geometry, transformations, viewing, and lighting; stereo viewing, ray tracing, and radiosity. At least two different graphics APIs will be introduced and will be used to implement graphics programs and provide hands-on experience in the topics covered. Prerequisite: COMP 31100 or COMP 33000 with a grade of C or better. (IRR)
Attributes: NS
4 Credits

COMP 45500 Search Engines and Recommender Systems (LA)

Explores how information retrieval and recommendation systems such as Netflix, Facebook, and Pandora, are designed and implemented. Combines development of information retrieval skills such as web-crawling, text & multimedia processing, boolean & vector-space modeling, classification, clustering, and similarity analysis. Will involve hands-on implementation of computer softwarde systems. Prerequisites: COMP 22000 and one 300-level COMP or MATH course all with a grade of C or better. (S,O)
4 Credits

COMP 45600 Machine Learning (LA)

Explores supervised learning (including linear/logistic regression, decision trees, and neural networks) and unsupervised learning (including clustering, anomaly detection). Covers both theoretical concepts and practical applications of machine learning, and provides opportunities to implement and experiment with these algorithms on real-world data sets. Prerequisites: COMP 22000 with a grade of C or better and one 300-level COMP or MATH with a grade of C or better. (IRR)
4 Credits

COMP 46500 Topics in Networks (LA)

This course investigates contemporary advanced algorithmic and networking concepts. Topics change depending on the semester but include the structure and function of networks, security in networks, and network simulations. The course exposes students to computing research and requires at least one significant programming project. Prerequisites: COMP 31100 and COMP 36500 both with a grade of C or better. (IRR)
Attributes: NS
4 Credits

COMP 47000-47001 Advanced Computer Project (NLA)

Students undertake a project to design and implement a substantial computer application under the guidance of one or more faculty members. May be repeated for a total of Prerequisites: Junior standing and permission of the computer science faculty. (F-S,Y)
1-3 Credits

COMP 47500 Senior Project (LA)

Offers students the opportunity to consolidate theory and apply concepts to a computer-based problem, thus enhancing their understanding of various facets of the computing discipline. Students are responsible for the analysis, design, development, documentation, implementation, and testing of the computer system. The project may be carried out singly or in small groups of up to four people. Prerequisites: Senior standing; permission of instructor. (F-S,Y)
Attributes: NS
3 Credits

COMP 48500 Emerging Media Capstone (NLA)

Working as part of a team, the student designs, develops, and documents a significant emerging digital media project under the guidance of one or more faculty members. Cross-listed with TVR 48500; students cannot receive credit for both COMP 48500 and TVR 48500. Prerequisites: COMP 38500 or TVR 38500 with a minimum grade of C-. (F-S, Y)
4 Credits

COMP 49000 Selected Topics in Computer Science (LA)

Topics to be determined by the instructor and the Department of Computer Science. May be repeated for credit for selected topics on different subjects. (IRR)
Attributes: NS
1-4 Credits

COMP 49200 Independent Study in Computer Science (LA)

Enrichment and extension of the regular curriculum to areas not covered in existing courses. Arranged individually between student and faculty sponsor according to guidelines available from the department. (IRR)
Attributes: UND
1-4 Credits

COMP 49500 Computer Science Capstone (LA)

Students explore connections between the integrative core curriculum, their computer science major, other learning experiences while at Ithaca College or abroad, and future goals. Students create a written reflection that integrates their various learning experiences and how their experience at Ithaca College has prepared them to achieve their future goals. Students also prepare a cover letter, curriculum vitae, and personal statement and identify career opportunities; and develop a showcase electronic portfolio. Prerequisites: Senior Standing; Computer Science and Emerging Media Computation majors only. (F,Y)
Attributes: CP
1 Credit

COMP 49800 Computer Science Internship for Majors and Minors (NLA)

A computer science project (carried out within an organization outside the department) that is not routine, entails significant work experience, and has substantial academic content. The student is responsible for developing a project proposal and completing it in conjunction with a faculty sponsorfrom the department and a supervisor from the outside organization. At the end of the project, thestudent shall present a report based on the experience. With departmental approval, up to may be counted as upper-level elective credit toward a major in computer science or mathematicscomputer science or a minor in the Computer Science Department. Students should have completed three-fourths of the major or minor to be eligible for this opportunity. Prerequisites:Permission of a faculty sponsor. 1-(IRR)
1-12 Credits