CS173: Intro to Computer Science

Bill Mongan

Welcome to CS173!

About Me

  • Born in Delaware County, PA
  • Married in Carmel, CA in 2015

About Me

  • Upper Darby High School Class of 2000
  • Drexel University Class of 2005
  • Completed my PhD at Drexel in 2018

Picture of Me

About Me

  • I am a private pilot who loves to travel

About Me

  • We love animals and have two cats
  • … plus some occasional visitors!

About Me

  • I use computing (specifically Machine Learning and Signal Processing)…
    • To improve public health
    • To leverage technology to mitigate side-effects and to improve access to care

What is a Computer?

What is a Computer?

What is a Computer?

  • Charles Babbage and the Analytical Engine
  • Ada Lovelace developed the first algorithm that could be executed on an Analyticial Engine.

What is a Computer?

  • Grace Hopper

Pioneer of the UNIVAC I who wanted to program computers in English

... and was told she couldn't!

Pioneer of COBOL computer language

What is a Computer?

  • Melba Roy Mouton

Head of the NASA "Computers" (mathemeticians)

Programmer at Goddard Space Flight Center

Project Echo Satellites (1 and 2)

Automata

  • These analytical engines and modern computers have something in common: use state machines
  • Ice Breaker Exercise on Finite Automata from CS Unplugged

What is Computer Science?

  • Data from the user or environment are transformed methodically into output

What is Computer Science?

  • Problems that we are better suited to solve (efficiently)
Computers ??? Humans
Compute directions to Florida Pick out items at a grocery store that add up to exactly $150 Explain a complex concept using metaphors
Identify the component notes in a song Predict recidivism Break words into syllables (perfectly)
Identify winning strategies in Chess Determine a good job candidate for a new job opening (why?) Reason about new information
Detect anomalies in your day-to-day routine for public health monitoring Can the countries on a world map be colored in with 3 unique colors without using the same color for two neighbors? Enact empathetic policies

What this Course is About

We will learn to program in the Java programming language.

More importantly, we will learn to develop software that does interesting things using programming as a tool.

Most importantly, we will learn to develop software that is easy for others to contribute to and to maintain as part of a team!

Teamwork

  • Computing is rarely done in isolation.

  • People:
    • Use your software
    • Know about the domains of the problems you’re solving
    • Collaborate with you to architect, design, and build software solutions
  • These are stakeholders - we need to be good communicators and good collaborators!

Coding Style

The code you write is only as useful as it is maintainable by the next person.

Debugging

Software development is challenging, and often requires some iteration to get right.

Fortunately, there are tools to help us!

Testing

  • One challenge when writing software is that it interacts with the outside world, and with a human user.

  • They may use the software in ways and in environments that we did not expect. It’s impossible to try everything!

  • Fortunately, software testing techniques help us do the best that we can to ensure robust software.

Class Logistics and Culture

  • Class website and syllabus: http://www.billmongan.com/Ursinus-CS173
  • Challenging but fun!
  • Communicate with me and the TA’s often - we enjoy it.
  • If you know stuff, use it for good to help others!