600.105 M & Ms
(the CS freshman experience)
Fall 2014

Meetings : Tuesdays, 4:30-5:20p, Shaffer 303
Primary Instructor : Prof. Gregory Hager
Course Coordinator : Prof. Joanne Selinski
Course Web Page : http://www.cs.jhu.edu/~joanne/cs105/fall14.html

Overview: This course provides freshmen computer science majors with an introduction to the field and department. Classes will be grouped into several blocks with presentations by different faculty members, each focused on a central theme. Lectures will be interactive, enabling students to think about and explore topics in a fun way. Transfers into the major and minors may enroll by permission only.

Grading: Pass/Fail is the only grading method available for the course. Attendance is required. Students are expected to actively participate in each session. There will be readings and quizzes periodically throughout the course. You will also read a book related to the discipline and write a 2-3 page paper on it, due the last class day (12/2).

Text: The book for 2014 is "The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition" by Frederick P. Brooks, Jr, Addison-Wesley, 1995. It is freely available on-line through the MSEL (http://proquestcombo.safaribooksonline.com/0201835959), or you are welcome to purchase a paper copy. (We did not request the bookstore to stock it.)

9/2 & 9/9 History of Computing [slides] Alan Turing, see the slides for lots more!
9/16 Break-outs A) Jason Eisner: Computers & Thought

AI was one of the earliest goals of CS. The first electronic computers, despite their minuscule computational power, were immediately dubbed "giant brains." They inspired humans to wonder: Are our own minds merely executing some kind of program? And if so, will artificial intelligence ultimately be possible? We'll discuss human activities that might seem to require intelligence. Can you guess which ones proved easiest to program? How did those programs work -- and were they really "thinking," or just faking it with cheap tricks?

Computing Machinery and Intelligence, Alan M. Turing, cool AI history infographic
B) Michael Dinitz: P vs NP: Philosophy and Mathematics

P vs NP is probably the most important open question in all of computer science. It is also one of the seven Millennium Prize problems in mathematics, meaning a solution is worth a $1 million cash prize. While defined in its modern form in the early 1970's, in the late 1980's an old letter from Godel to von Neumann was found in which Godel laid out the basic ideas behind the P vs NP problem, and some of its implications. Most important to Godel was the question of whether "the mental work of a mathematician concerning Yes-or-No questions could be completely replaced by a machine." We will examine the P vs NP problem from a high-level point of view, with a particular emphasis on its implications in mathematics (can all proofs be found by computer?) and philosophy (can creativity itself be automated?).

Letter from Godel to von Neumann, Article by Hartmanis about it
C) Randal Burns: The (First) Big Data Revolution 1880-1956

On May 1, 2014, the Office of the President of the United States announced "While big data unquestionably increases the potential of government power to accrue unchecked, it also hold within it solutions that can enhance accountability, privacy, and the rights of citizens. Properly implemented, big data will become an historic driver of progress, helping our nation perpetuate the civic and economic dynamism that has long been its hallmark." Such a statement would be more accurate and pressing in 1914 than 2014. This session will explore the first big data revolution driven by new storage technologies developed in the late 19th century. We will examine technological developments and they shaped the geo-political landscape of the 20th century, such as Prohibition, the Great Depression and the Holocaust.

Tabulator, Punchcard
9/23 & 9/30 The Information Age [updated slides] Net Neutrality: article 1, article 2
10/7 & 10/14 Deconstruction [lecture slides] iPad Briefing, Google search deconstruction
10/21 Break-outs A) Yair Amir: From Overlays to Clouds: Inventing a New Network Paradigm

The Internet presents compelling reach, cost and capacity properties that drive more and more forms of communication to use it as their network of choice. These properties stem from a few core design principles underlying the Internet, such as best effort packet switching and routing, and end-to-end reliability, congestion control and addressing: in essence, keep it simple in the middle and smart at the edge.

New applications bring new demands that clash with the core principles: high performance reliability for large file transfers; low latency interactivity for VoIP calls; point-to-multipoint reliable transport and delivery for live TV; “perfect” reliability and timeliness for remote surgery and remote manipulation; and intrusion resiliency required by clouds, SCADA, and other critical infrastructure systems.

This session surveys a decade-long journey developing the “right” network paradigm to address the new demands. We present the overlay architecture and associated protocols that were invented along the way, moving more of the intelligence to the middle of the network. The architecture is implemented by a flexible, software-based overlay router that is augmented with protocols tailored to new demands, while using the Internet as is. We discuss a reliable protocol that dramatically reduces average latency, a second protocol tailored to VoIP, and a third protocol tailored to live TV. A new cloud networking service actualizes this network paradigm at scale. Having been deployed globally over the last two years, this service is already changing the world of live TV transport and delivery.

slides, YouTube video
B) Xin Li: Randomness and Computation

"God does not play dice"---Albert Einstein.
Is the universe inherently deterministic or probabilistic? Perhaps more importantly – can we tell the difference between the two? One of the most important achievements in computer science since the 1970's is the use of randomness in computation. Nowadays, randomness has been widely used in many areas such as algorithms, distributed computing and cryptography. Which of these applications survive if the universe had no randomness in it at all? Which of them survive if only poor quality randomness is available, e.g. that arises from “unpredictable” phenomena like the weather or the stock market? We will talk about these questions from a very high level point of view.

Articles: Use of Randomness in Computation, Randomness and Computation
C) Russ Taylor: Medical Robotics

This session will discuss ongoing research at the JHU Engineering Research Center for Computer-Integrated Surgical Systems and Technology (CISST ERC) to develop computer-integrated interventional systems (CIIS) that combine innovative algorithms, robotic devices, imaging systems, sensors, and human-machine interfaces to work cooperatively with surgeons in the planning and execution of surgery and other interventional procedures. The impact of CIIS on medicine in the next 20 years will be as great as that of Computer-Integrated Manufacturing on industrial production over the past 20 years. A novel partnership between human surgeons and machines, made possible by advances in computing and engineering technology, will overcome many of the limitations of traditional surgery. By extending human surgeons. ability to plan and carry out surgical interventions more accurately and less invasively, CIIS systems will address a vital need to greatly reduce costs, improve clinical outcomes, and improve the efficiency of health care delivery.

CIIS systems combine images and other information about an individual patient with .atlas. information about human anatomy to help clinicians plan how to treat the patient. In the operating room, the patient-specific plan and model are updated using images and other real-time information. The system has a variety of means, including robots and .augmented reality. displays to assist the surgeon in carrying out the procedure safely and accurately. The same technology will be used to assist in subsequent patient follow-up and in enabling statistical quality control to help improve the overall efficacy and safety of surgery and interventions.

Medical Robotics Survey
10/28, 11/4 & 11/11 The Future & Implications: computing and society -- lecture slides Uncanny Valley, AI article
11/18 Break-outs A) Yanif Ahmad: Next-Generation Cloud and Data Ecosystems

With massive datacenters as our consolidated computing infrastructure, and the "Internet of Things" as our data sources, the multiple hardware and software layers comprising our data ecosystems are revolutionizing our abilities to acquire, process, consume and act on Big Data.
From virtualization to software-defined networking and new database architectures, today's hardware and software systems realize substantially improved flexibility and usability across applications. In turn, this enables the economies of scale that drives computing's march towards becoming a pervasive utility, much like our electricity grid.
This session will take a macroscopic and forward-looking view of cloud and data ecosystems, including the potential impact of new hardware and storage (e.g., specialized processors, phase-change memory), the new software and programming abstractions needed for data processing at scale, and the common theme of specialization that underpins recent advances in data ecosystems.

Chapter 1. The Datacenter as a Computer (link only accessible from a JHU IP); videos of datacenter tours
B) Philipp Koehn: Can Computers Talk?

While computers already beat us in tasks such as playing chess or finding directions when driving, having a conversation with a computer still breaks down very quickly. We seem to be making progress these days with speech interfaces such as Siri, or automated language translation on the web, but these are far from perfect. Why is processing natural language so hard? What is it even good for?

Wikipedia NLP, article
C) Vladimir Braverman: Algorithms in our daily life

In this talk, we will (very informally!) learn how to use algorithms to address the following problems.

  • GPS and Navigation using Shortest paths: GPS Routes
  • Web search using Page Rank: article1, article2
  • Big Data Analysis using Clustering and Nearest Neighbor Search: article1, article2, video, coursera course
  • Other methods (if time permits): matrix multiplication, linear programming and the probabilistic method

(see links per topic)
12/2 Book Discussion  

Computer Science Academic Integrity Code:

Cheating is wrong. Cheating hurts our community by undermining academic integrity, creating mistrust, and fostering unfair competition. The university will punish cheaters with failure on an assignment, failure in a course, permanent transcript notation, suspension, and/or expulsion. Offenses may be reported to medical, law or other professional or graduate schools when a cheater applies.

Violations can include cheating on exams, plagiarism, reuse of assignments without permission, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition. Ignorance of these rules is not an excuse.

Academic honesty is required in all work you submit to be graded. Except where the instructor specifies group work, you must solve all homework and programming assignments without the help of others. For example, you must not look at anyone else's solutions (including program code) to your homework problems. However, you may discuss assignment specifications (not solutions) with others to be sure you understand what is required by the assignment.

If your instructor permits using fragments of source code from outside sources, such as your textbook or on-line resources, you must properly cite the source. Not citing it constitutes plagiarism. Similarly, your group projects must list everyone who participated.

Falsifying program output or results is prohibited.

Your instructor is free to override parts of this policy for particular assignments. To protect yourself: (1) Ask the instructor if you are not sure what is permissible. (2) Seek help from the instructor, TA or CAs, as you are always encouraged to do, rather than from other students. (3) Cite any questionable sources of help you may have received.

On every exam, you will sign the following pledge: "I agree to complete this exam without unauthorized assistance from any person, materials or device. [Signed and dated]". Your course instructors will let you know where to find copies of old exams, if they are available.

For more information, see the guide on "Academic Ethics for Undergraduates" and the Ethics Board web site (http://ethics.jhu.edu).