600.105 M & Ms
(the CS freshman experience)
Spring 2018

Meetings : Tuesdays, 4:30-5:20p, Hodson 316
Course Coordinator : Prof. Joanne Selinski
Course Web Page : http://www.cs.jhu.edu/~joanne/cs105/spring18.html

Overview: This course provides freshmen computer science majors with an introduction to the field and department. A variety of faculty members will provide a mix of historical context and current topics. Classes will be interactive, enabling students to think about and explore topics in a fun way, as well as get to know their classmates. CS non-freshmen and minors may enroll by permission only. Satisfactory/Unsatisfactory only.

Grading: Even though the course is graded S/U only, there are specific requirements you must meet in order to pass the course. Grades will be assessed as follows:

Resources: We will use two different sets of required readings, in addition to supplemental readings provided by faculty guest speakers throughout the semester. The weekly readings will come from John Mac Cormack, "9 Algorithms that Changed the Future: The Ingenious Ideas that Drive Today's Computers", Princeton University Press, 2012. We'll refer to this as [9Algos] in the schedule below. A copy has been put on reserves in the MSE Library. You can also buy inexpensive copies online. (Apologies for forgetting to order it through the JHU bookstore.)

The readings for the semester reflection paper and final discussion are several documents that provide insights, historical context, and in some cases opposing views into early and modern software development. Feel free to read and explore further than the required readings. Include citations for these and any other resources that contribute to your reflection. Reflection questions will be distributed.

Optional Reads: There are many books that may be of interest to you as CS majors and we encourage you to explore them, now or later; just do an internet search for sources. Some of these were used in prior years' M&Ms course.

Lecture Schedule: This table of topics and references will be updated as the semester progresses.
DateSpeaker/TopicReadings
1/30 Joanne Selinski: Introductions & Course Overview Topic suggestion doc
2/6 Misha Kazhdan: Computer Graphics [9Algos] Ch 1 - Introduction & 2 - Search Engine Indexing, Misha's slides
2/13 Philipp Koehn: Natural Language Processing [9Algos] Ch 3 - PageRank
2/20 Matt Green: Applied Cryptography [9Algos] Ch 4 - Public Key Crypto
2/27 Randal Burns: Data Science [9Algos] Ch 6 - Pattern Recognition
3/6 Ben Langmead: Computational Genomics [9Algos] Ch 7 - Data Compression
3/13 Mike Dinitz: P vs. NP: Philosophy and Mathematics [9Algos] Ch 10 - What Is Computable?
3/20 Spring Break (don't forget to start the term readings and sketching your paper)
3/27 Michal Miskin-Amir & Yair Amir (no reading or quiz)
4/3 Raman Arora: Machine Learning Prologue to The Master Algorithm by Pedro Domingos
4/10 Ryan Huang: Operating Systems and Reliability [9Algos] Ch 9 - Digital Signatures
4/17 Mark Dredze: Social Media for Public Health [9Algos] Ch 8 - Databases
4/24 Xin Li: Error Correcting Codes [9Algos] Ch 5 - Error-Correcting Codes & Ch 11 - Conclusion
5/1 Term Book Discussion Paper due on Blackboard by noon on Sunday 4/29.


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).