1. What is Computer Science?

"The art and science of turning ideas into mechanized operations." -Douglas Blank, Apr 22, 2015, 2:45pm.

Computer science is not programming. But we spent a lot of time programming. Yes, we did. But now that we know the basics, we can use that knowledge to build concrete ideas on a solid foundation.

1.1 What should I have gotten out of this course?

  1. Understanding of some core ideas in computer science
    • hands-on exploration of the idea of an "algorithm"
    • hands-on exploration of the ideas in computing, including functions, variables, loops, types
    • hands-on exploration (and appreciation) of Object-Oriented Programming
  2. First-hand knowledge:
    • computing can take time
    • animations/simulations/games are just repeatedly drawing with slight changes
  3. Detailed exploration of:
    • image processing
    • visualizations
    • robot control
    • designing and using classes

1.2 Little Ideas

  1. Programs run from top to bottom
  2. An infinite loop is one that runs for ever (while (true) { ... })

See Jeopardy review for more gathered from the in-class exercise.

1.3 Big Ideas from CS110

  1. Control structure - if, loops
    1. Loops (for and while)
    2. if, else if, else
  2. Functions (defining and calling)
  3. Variables (global and local)
  4. Parameters
  5. Arguments
  6. Recursion - when a function is defined in terms of itself. See quicksort
  7. Types - int, float, boolean, void, int[], etc
  8. Classes - defining and instantiating
  9. Instance
  10. Sorting - different algorithms take time
  11. Finite State Machine (FSM) - robot control

1.4 Topics

Computer Science covers:

  • Data structures (things like arrays and lists, but more complicated things like trees, dictionaries, and graphs)
  • Cognitive Science
    • Artificial Intelligence
      • Logic
      • Machine Learning
      • Robotics
      • Vision/Image Processing
      • Developmental Robotics
      • Computational Linguistics
  • Operating Systems
  • Programming Languages
    • Compilers
  • Human-Computer Interaction
    • Interface Design
    • Web design
  • Theory of Computation
    • Analysis of Algorithms
  • Software Engineering
    • Security
    • Cryptography
    • Compression
    • Forensics
  • Genomics
  • Bioinformatics
  • Art
    • Graphics
    • Game design
  • Database Design and Theory
  • Mathematics
    • Discrete Math
    • Number Theory
    • Game Theory
    • Numerical Analysis
    • Computational Geometry
    • Networks (Graph Theory)
  • Programming
    • Object-Oriented Programming (OOP) (Java, C++, Python, etc.)
    • Functional Programming (Haskell, F#, Scheme, Lisp, Python, etc.)
    • Logic programming (Prolog, etc.)
    • Imperative Programming (C, Java, Python, etc.)
    • Declarative Programming (SQL, Prolog, etc.)
    • Parallel Computing
    • Quantum Computing
  • and many, many others... some just being created!

Related areas:

  • Computer Engineering
  • Electrical Engineering
  • Informatics

1.5 Courses at Bryn Mawr College

1.6 Assignment Ideas

  1. Assignment #1 - Getting started with something relevant to you
  2. Assignment #2 - Design a drawable (parameterized) thing
  3. Assignment #3 - Abstract art; practice with functions
  4. Assignment #4 - Creating visualizations to help tell a story
  5. Assignment #5 - Introduction to OOP
  6. Assignment #6 - More experience with OOP
  7. Assignment #7 - Objects with internal state; experience with 3D perspective
  8. Assignment #8 - Robot control (internal state, Finite State Machine)
  9. Assignment #9 - Image Processing - manipulate pixels for different purposes
  10. Assignment #10 - Capstone, free choice; demonstrate what you know

1.7 What do BMC CS students do after college?

  • work for:
    • twitter
    • google
    • microsoft
    • banks
    • start-ups
  • go to grad school in CS:
    • princeton
    • upenn
    • university of ... you name it
  • other grad schools (law)
  • teach (middle school, high school)
  • other things!
    • become a comedian, no joking