Computer Science

A Place to Belong. A Person to Become.

Computing is a discipline that requires and develops capabilities in solving deep, multidimensional problems requiring imagination and sensitivity to a variety of concerns. A major in computer science will provide you with a foundation of knowledge, problem solving skills and habits of logical thinking that will serve as a competitive advantage to you in whatever career you pursue.

If you want to make a positive difference in the world, study computing. Computing drives innovation in the sciences (such as the human genome project, AIDS vaccine research, environmental monitoring and protection, just to mention a few), and also in engineering, business, entertainment and education.

A MULTIPLE ENTRY MAJOR

Our first class assumes no previous programming experience. We’ll help you develop the skills you need to succeed in computer science. Students with excellent preparation in AP or college-level classes will head straight into advanced classes. If you have a non-traditional background, we’ll evaluate and place you based on your problem solving and programming skills.

A LIBERAL ARTS MAJOR

Computer science is a discipline that contributes to the success of many other disciplines. Our CS major recognizes this fact and offers classes that combine computer science with other fields of study. We’ll encourage you to combine your interests in computer science with other fields, such as business, science, art, and mathematics, through minors, majors, and independent studies.

A CONFIDENT MAJOR

Every CS major completes a semester-long project. If you’re the driven type, you’ll find a wealth of additional ways to stand out. You can take paid summer internships, join faculty research projects or work on campus in technology-related fields.

Whether you want to go to graduate school or find employment in industry, admission counselors and potential employers are always impressed by students who have accomplished something unique and challenging before they graduate. While all college graduates will have similar lists of courses on their transcripts, you will be the only one to have completed your unique project and opportunities.

WHAT DO COMPUTER SCIENCE MAJORS STUDY?

  • Fundamentals of computer science
  • Data structures
  • Problem solving
  • Algorithmic analysis
  • And other topics that interest you, from programming languages to computer networks to artificial intelligence

COMPUTER SCIENCE PLACEMENTS

Previous graduates’ career and professional placements have included:

  • Motorola
  • Synergy International Consulting
  • TDC Solutions
  • Lockheed Martin
  • IBM
  • Google

Graduate school placements have included:

  • University of Southern California
  • University of Illinois
  • University of Indianapolis
  • University of Notre Dame
  • Tufts University

COURSES

Number
Name
Units
Description

CS 112 Computer Science Principles 1.00 Introduction to the “big ideas” of computer science: creativity, abstraction, data and information, algorithms, programming, and the internet. Students will develop their communication, teamwork, and problem-solving skills. Includes an exploration of the global impacts of computing. Not open to students with prior credit in 220 or the equivalent. Does not count toward the major or minor. Partially satisfies the SM CCR. Fee charged.

CS 220 Fundamentals of Computer Science 1.00 An introduction to problem-solving, program design, testing methodology and structure of programming languages. Students will learn to program in a high-level programming language to solve problems from a wide range of computer science topics. Partially satisfies the SM CCR. Includes lab Fee charged.

CS 223 Data Structures 1.00 A study of the implementation and evaluation of advanced data structures. Data structures include linked lists, stacks, queues, trees, graphs and tables with the use of recursive algorithms to perform operations. Includes lab. Prerequisites: 220. Partially satisfies the SM CCR. Fee Charged.

CS 229 Data Wrangling and Management 1.00 An overview of the fundamental principles and techniques related to the collection, storage and management of information; SQL/NoSQL fundamentals; data scraping, querying and aggregation; data manipulation and analysis. Not open to students with prior credit in 328. Prerequisite: 220.

CS 231 System Fundamentals 1.00 Fundamentals of the hardware and software infrastructure upon which applications are constructed, including data representations, Boolean algebra and digital logic, assemblers and I/O implementation, instruction sets, memory organization, system performance evaluation and benchmarks. Includes an introduction to system software, parallel and distributed architectures, and computer networking. Prerequisites: 220; MAT 101, MAT 113, MAT 121 (or above), placement at the Ready for Precalculus level or above, or concurrent enrollment in MAT 101. Not open to students with previous credit for CS 234.

CS 233 Introduction to Robotics 1.00 Introduction to robotics and topics in artificial intelligence relevant to robotics through a combination of lectures and labs. Lectures introduce concepts, such as paradigms for organizing intelligence in robots and different sensing techniques. In labs, students learn an open-source robotics platform, such as Arduino, with the goal of building a working reactive robot by the end of the course. Offered alternate years. Prerequisite: 223. Fee Charged.

CS 263 Ethics of Computer Technology 1.00 This course seeks to develop a solid foundation for reasoning about ethical, professional, and social issues that arise in the context of computer technology. Emphasis is placed on identifying appropriate legal, professional,and ethical contexts and on applying sound critical thinking skills to a problem. Topics covered include professional codes of ethics, safety critical systems,whistleblowing, privacy and surveillance, freedom of speech, intellectual property, and cross-cultural issues. This course relies heavily on case studies of real-world incidents. Identical to ENGR 263 and PHI 263. Prerequisite: Sophomore standing. Satisfies the PP CCR. Satisfies the W2 ACE.

CS 315 Algorithmic Analysis 1.00 A systematic study of creating and evaluating algorithms, the process of solving problems. Brute force, divide-and-conquer, and problem transformation techniques are used to solve problems. Big Theta notation, best-average- worse case analysis, and notions of NP completeness are used to evaluate problems. Recommended by end of junior year. Prerequisites: 220 and one of Mat 243 or Mat 220. Lab fee.

CS 320 Topics in Software Development 1.00 Introduction to the various facets of software development such as modular programming, design patterns, source code version control, test-driven development and documentation. Prerequisite: CS 223. May be repeated for credit with permission of the instructor.

CS 321 Software Development Practicum 1.00 An exploration of practices and skills essential to software development: object-oriented-programming fundamentals; class design principles; design patterns; user stories; agile development; test-driven development; coding practices. Students will employ what they learn in the development and delivery of a high-quality software product. Includes lab. Prerequisite: 223.

CS 323 Mobile Application Development 1.00 Introduction to developing apps for Android mobile devices. Includes general development topics such as modular programming, design patterns, version control, automated testing, and documentation. Android-specific topics include: activities, fragments, and layouts; app navigation; life-cycle methods; connecting to databases; using built-in services. Prerequisite: 223.

CS 325 Web Application Development 1.00 Introduction to the various facets of developing web applications, with an emphasis on software development concepts including modular programming, automated testing, documentation, and version control. Other topics include: user interaction, code modularity, and business logic via Javascript; page formatting via HTML templates and CSS; asynchronous client-server communication. Prerequisite: 223.

CS 326 Functional Programming 1.00 Introduction to the principles of functional programming, including higher-order functions, recursive definitions, list processing, and pattern matching. Offered alternate years. Prerequisite: CS 223.

CS 327 Advanced Software Development 1.00 Exploration of advanced topics in software development and delivery, including advanced design patterns, acceptance testing, software configuration, release management and continuous integration and delivery. Includes the completion and delivery of a high-quality software product. Prerequisite: 321.

CS 328 Data Management and Web Services 1.00 An overview of the fundamental principles and techniques related to the collection, storage, management, and delivery of information: SQL/NoSQL fundamentals; data scraping, querying and aggregation; transport protocols; web services. Not opent to students with prior credit in 229. Prequisite: 223

CS 335 Theory of Computation 1.00 A mathematical investigation of the fundamental capabilities and limitations of computers. Finite automata, Turing machines, regular and context-free languages, computability and solvability, the halting problem, Church’s thesis. Offered alternate years. Prerequisite: 315.

CS 340 Computer Networks 1.00 A study of modern communication systems, predominantly the Internet. Topics include: the client-server paradigm, use of existing protocols, creation of new protocols, P2P applications, routing algorithms, distributed sharing of resources and communicating in the face of unreliable networks. Offered alternate years. Prerequisite: 223 and 231.

CS 345 Operating Systems 1.00 Theory of operating systems, including memory management, concurrent processes, scheduling algorithms, device drivers, and file systems. Offered alternate years. Prerequisite: 223 and 231.

CS 362 Foundations of Machine Learning 1.00 Introduces the core concepts of machine learning, with an emphasis on the computational, statistical, and mathematical foundations of the field. Students will investigate models for both supervised and unsupervised learning, and will learn to use machine learning techniques such as clustering, regression, decision trees, support vector machines and artificial neural networks. Prerequisites: CS 220; MAT 101, or placement at the Ready for Precalculus level, or concurrent enrollment in MAT 101; and one of MAT 217, MAT 327, or ECO 257.

CS 461 Senior Seminar 1.00 Seminar course in which students are aided in developing, writing, presenting,and managing an individual software or research project. Students present their project proposals in both written and oral form. Good software development practices, such as version control, and soft skills, such as effective communication, are emphasized. Prerequisite: senior standing; computer science major; and 321.

Faculty

Haris Skiadas Professor of Mathematics and Computer Science 812-866-6190 skiadas@hanover.edu

Kevin Stormer '04 Chief Information Officer 812-866-6839 stormer@hanover.edu

Barbara Wahl Professor of Mathematics & Computer Science 812-866-7326 wahl@hanover.edu

Theresa Wilson Assistant Professor of Computer Science 812-866-6189 wilsont@hanover.edu