Skip to main content

Computer Science

Students will be able to:

  1. Create formal data definitions given an English-language description of a problem, and apply these data definitions to create and verify specific data examples.
  2. Apply a series of systematic design recipes to a variety of programming problems, including documentation, template, coding, and testing steps.
  3. Utilize a class-based (object-oriented) language to solve a variety of computing problems.
  4. Verbally articulate the benefits and drawbacks of solving different problems using programming paradigms.
  5. Write mid-sized programs using concepts (e.g., objects, classes, messages, methods, interfaces, encapsulation, polymorphism, and inheritance) of object-oriented programming.
  6. Create and maintain applications using the Java programming language.
  7. Create a software system by coordinating in small-scale teams, involving division of functionality, creation of interfaces, and integration and testing of software modules.
  8. Develop programs using a systematic design process involving specification, design, documentation, implementation, testing, and maintenance.

Information Science

Students will be able to:

  1. Create formal data definitions given an English-language description of a problem, and apply these data definitions to create and verify specific data examples.
  2. Apply a series of systematic design recipes to a variety of programming problems, including documentation, template, coding, and testing steps.
  3. Utilize a class-based (object-oriented) language to solve a variety of computing problems.
  4. Verbally articulate the benefits and drawbacks of solving different problems using programming paradigms.
  5. Write mid-sized programs using concepts (e.g., objects, classes, messages, methods, interfaces, encapsulation, polymorphism, and inheritance) of object-oriented programming.
  6. Create and maintain applications using the Java programming language.
  7. Arbitrate amongst different theories or explanations through independently researching a question within information science, encompassing identifying relevant literature and marshaling of evidence.
  8. Present written and oral arguments to justify or refute a hypothesis about information systems.

Data Science

Students will be able to:

  1. Create formal data definitions given an English-language description of a problem, and apply these data definitions to create and verify specific data examples.
  2. Apply a series of systematic design recipes to a variety of programming problems, including documentation, template, coding, and testing steps.
  3. Utilize a class-based (object-oriented) language to solve a variety of computing problems.
  4. Verbally articulate the benefits and drawbacks of solving different problems using programming paradigms.
  5. Write mid-sized programs using concepts (e.g., objects, classes, messages, methods, interfaces, encapsulation, polymorphism, and inheritance) of object-oriented programming.
  6. Create and maintain applications using the Java programming language. Programmatically collect and integrate data in a variety of formats (XML, JSON, HTML) and from a variety of sources (files, databases, and web sites).
  7. Programmatically transform data into a form that is fit for analysis (e.g., prepare data for insertion into a database or as input to a program).
  8. Analyze data using statistical methods, including choosing an appropriate method for a given problem statement (e.g., PCA, k-means clustering, gradient descent, logistic regression).
  9. Articulate the trade offs of varying statistical and data mining algorithms in regards to space, time, and performance.

Cybersecurity

Students will be able to:

  1. Create formal data definitions given an English-language description of a problem, and apply these data definitions to create and verify specific data examples.
  2. Apply a series of systematic design recipes to a variety of programming problems, including documentation, template, coding, and testing steps.
  3. Utilize a class-based (object-oriented) language to solve a variety of computing problems.
  4. Verbally articulate the benefits and drawbacks of solving different problems using programming paradigms.
  5. Write mid-sized programs using concepts (e.g., objects, classes, messages, methods, interfaces, encapsulation, polymorphism, and inheritance) of object-oriented programming.
  6. Create and maintain applications using the Java programming language.
  7. Articulate the intellectual foundations for the design of a secure cyber infrastructure, and be able to apply these principles (e.g. confidentiality, integrity, availability, authenticity, separation of and least privilege, Kerckhoff’s Principle) in the creation of computer systems and networks that can be protected from adversarial attacks.
  8. Model threats based on real-world understanding of the capabilities and motivations of different kinds of attackers (e.g. cyber criminals and nation-state adversaries), and demonstrate working knowledge of attack and exploitation techniques against systems and networks.
  9. Apply the principal of “defense in depth” when designing computer systems and networks, by layering and composing multiple different complementary security mechanisms.
  10. Successfully navigate ethical norms and legal issues related to cybersecurity, including: responsible disclosure, individual privacy, and the DMCA and CFAA.