Syllabus
The interpreters may blunder, but truths are immutable, eternal, and never in conflict...
The object of the university...is not so much to impart knowledge to the pupils, as whet the appetite, exhibit methods, develop powers, strengthen judgment, and invigorate the intellectual and moral forces. It should prepare for the service of society a class of students who will be wise, thoughtful, progressive guides in whatever department of work or thought they may be engaged.
...our simple aim is to make scholars, strong, bright, useful, and true.
—Daniel Coit Gilman, inaugural address, 22 February 1876
Please note that this syllabus could be updated during the semester. Any updates will be mentioned in class and on Slack.
Instructors
Brennon Brimhall
Primary Instructor
307 Malone Hall
David Hovemeyer
Instructor
240A Malone Hall
Course Assistants
Ishan Hemmige
Head Course Assistant
Emma Dionne
Course Assistant
Lectures
Lectures are held on Zoom from 10:00am to 11:45am EDT MWF. It is expected that students have microphones and cameras on to facilitate discussion.
- Link: https://JHUBlueJays.zoom.us/j/99436359812?pwd=bnpGVklLK3d4aWNNV1hhZkpvQkdrZz09
- Meeting ID: 994 3635 9812
- Passcode: 797378
Office Hours
We have three sets of office hours for you this semester:
Brennon: 9:00am to 10:00am EDT MWF (same link as lecture) or by appointment. Send him a Slack message or email by the night before to let him know you’re coming.
Ishan: 9:00-11:00am EDT Sundays via Zoom (https://JHUBlueJays.zoom.us/j/3375929174).
Emma: 2:00-4:00pm EDT Thursdays via Zoom (https://JHUBlueJays.zoom.us/j/8435753651).
It’s possible that we change office hours. If so we will let you know in Slack.
Resources
- Course Website: https://jhucsf.github.io/summer2024 (you are here!)
- Textbooks:
- Grades, Assignment Submission, Exams: https://www.gradescope.com/
- Slack: https://jhucsf.slack.com
Course Information
The course is about computer systems from the programmer’s perspective. We will make a fairly deep dive into topics such as data representation, memory, assembly language, CPU architecture, networks, and concurrency. By the end of the course you will know a lot about how modern computers really work and how to take advantage of their advanced features.
Prerequisites: Intermediate Programming (EN.601.220). Required.
Compressed Schedule
This course is normally taught in-person during the fall and spring semesters. These semesters are typically 15 weeks long (or 16 weeks before breaks). This is already quite an undertaking since other universities typically cover this same content as 2 or 3 separate classes.
This summer offering has two major differences:
- Lectures will be offered in an online, synchronous format. Attendance at lecture with camera and microphone on is expected and will form part of your overall grade (see participation).
- Per scheduling requirements from the summer programs office, the course will be compressed into 8 weeks.
We will not be reducing the course content or assignments this summer.
This means you will have approximately half the time for each assignment as your fall or spring peers. If this course is normally a 3 credit class that feels like a 4 credit class, then this summer’s offering will feel like a 6 to 8 credit class. Please set your expectations accordingly.
We recognize that making this compressed format a success is a team sport. We are committed to doing our part. For example, we will give grades and feedback to students in an expedited manner.
Course Goals
By the end of the course you will
- Understand machine data types and arithmetic
- Be able to understand and write assembly language programs
- Understand machine-level memory organization
- Understand some types of machine-level security vulnerabilities and how to avoid introducing them
- Understand memory hierarchies
- Understand architectural features of modern processors, and how to optimize code for efficient execution
- Understand how linkers enable the creation of executables from separately-compiled modules
- Understand dynamic linking and run-time loading of shared objects
- Understand process address space layout
- Understand virtual memory translation hardware and how it is used for memory isolation and sharing
- Understand basic principles of computer networking
- Use networking APIs such as sockets to implement network applications
- Use concurrency using abstractions such as threads
This course will address the following Criterion 3 Student Outcomes:
Graduates of the program will have an ability to:
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the programs discipline.
Course Topics
- Machine-level data representation
- Computer architecture
- Assembly-language programming
- Performance optimization
- Memory hierarchy and caching
- Virtual memory
- Networks
- Concurrency
Course Expectations and Grading
Class meetings will consist of lecture and discussion, interspersed with in-class activities.
Your course grade will be determined as follows:
- Programming assignments: 55%
- Exams: 39% (3 exams, each worth 13%)
- Participation: 6%
You have a total of 72 late hours to use as needed for homework assignments throughout the course. Late hours cannot be used for exams.
All work must be received by 26 July.
If you are planning on using more than 24 late hours on an assignment, please send a private message to the instructors on Slack to let us know. Assignment submissions which exceed the maximum number of late hours will (generally) not be considered for credit. Having said that, we understand that exceptional circumstances can arise. If you are in a situation where you think you may need additional late hours, please notify your instructor as soon as possible.
Participation credit is earned by attending class and participating in peer instruction quizzes.
Grading scale
Note that upper bounds are exclusive and lower bounds are inclusive.
Average | Letter grade | Performance |
---|---|---|
97 or above | A+ | Excellent |
93–97 | A | Excellent |
90–93 | A- | Excellent |
87–90 | B+ | Good |
83–87 | B | Good |
80–83 | B- | Good |
77–80 | C+ | Satisfactory |
73–77 | C | Satisfactory |
70–73 | C- | Satisfactory |
67–70 | D+ | Passing |
60–67 | D | Passing |
below 60 | F | Failure |
Key Dates
The Schedule lists exam dates.
The Assignments page lists assignments and their due dates.
Assignments and Readings
The Schedule lists the topics and readings for each day.
Ethics
The strength of the university depends on academic and personal integrity. In this course, you must be honest and truthful, abiding by the 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.
Generative Artificial Intelligence
Submitting code, writing, or other products created by any generative AI technology (e.g. Anthropic’s Claude, OpenAI’s ChatGPT, GitHub’s Copilot, Google’s Bard) is a violation of academic ethics.
Policies
Disability Services
Johns Hopkins University values diversity and inclusion. We are committed to providing welcoming, equitable, and accessible educational experiences for all students. Students with disabilities (including those with psychological conditions, medical conditions, and temporary disabilities) can request accommodations for this course by providing an Accommodation Letter issued by Student Disability Services (SDS). Please request accommodations for this course by reaching out directly to the instructor as early as possible to provide time for effective communication and arrangements.
For further information or to start the process of requesting accommodations, please contact Student Disability Services at Homewood Campus, Shaffer Hall #101, call: 410-516-4720 and email: mailto:studentdisabilityservices@jhu.edu or visit the website.
Mental Health Statement
JHU has several resources to support students. Many students struggle with stress at times with stress, anxiety, and depression. The Counseling Center has many resources available to students:
Johns Hopkins University Student Well-Being
In addition, The Johns Hopkins University Behavioral Health Crisis Support Team (BHCST) pairs experienced, compassionate crisis clinicians with specially trained public safety officers on every shift on and around the Homewood campus, seven days a week. The BHCST will provide immediate assistance to those who need it and, just as importantly, link individuals in crisis to ongoing support services in the days and weeks that follow. Call Public Safety, 410-516-5600, and ask for a BHCST clinician.
If you have concerns about a specific student, please contact:
- For emergencies (threat to self or others): 410-516-4600 or 911
- For on-scene mental health support: BHCST at 410-516-4600
- For undergraduates: Student Outreach & Support at 410-516-7857 or (studentoutreach@jhu.edu)[mailto:studentoutreach@jhu.edu] (undergraduates)
- For KSAS Graduate Students: Renee Eastwood, Assistant Dean for Graduate and Postdoctoral Academic and Student Affairs
- For WSE Graduate Students: Megan Barrett, Assistant Dean for Engineering Student Affairs
Teaching Policies and Guidelines
Teaching Policies and Guidelines — Undergraduate Advising
Academic Integrity
The strength of the university depends on academic and personal integrity. In this course, you must be honest and truthful. Ethical violations include cheating on exams, plagiarism, reuse of assignments, improper use of the internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition.
Report any violations you witness to the instructor. You can also contact:
- For undergraduates: the associate dean of student conduct (or designee) by calling the Office of the Dean of Student Life at 410-516-8208 or via email at studentconduct@jhu.edu
- For KSAS Graduate Students: rseitz5@jh.edu
- For WSE Graduate Students: christinekavanagh@jhu.edu
For undergraduate students, the adjudication procedures can be found online here.
For graduate students the policy can be found on the Homewood Graduate and Postdoc Affairs website.
Inclusivity
Johns Hopkins University is committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone here has the right to be treated with dignity and respect. Fostering an inclusive climate is important because research and experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. Please join us in creating a welcoming and vibrant classroom climate. Note that you should expect to be challenged intellectually by the instructor, the TAs, and your peers, and at times this may feel uncomfortable. Indeed, it can be helpful to be pushed sometimes in order to learn and grow. But at no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity.
If you ever have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, please reach out to your instructor or the TAs who will take your communication seriously and will seek mutually acceptable resolutions and accommodations. Reporting will never impact your course grade. You may also share concerns with the department chair, the Director of Undergraduate Studies (WSE Department Heads and DUSes), the WSE Assistant Dean for Diversity and Inclusion (Darlene Saporu, dsaporu@jhu.edu), the KSAS Assistant Dean for Diversity and Inclusion (Araceli Frias, afrias3@jhu.edu) or the Office of Institutional Equity (oie@jhu.edu). In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g., sexual harassment).
How to Succeed in this Class
- Find teammates for pair assignments early. The ideal scenario is that everyone is in a pair on day one. A good teammate is someone you can work well with, not just a friend.
- Start lab assignments as soon as possible.
- Test your code thoroughly. Plan to spend about as much time testing your code as writing it.
- Use good programming practices.
- Take advantage of instructor and course assistant office hours.
- Ask questions on Slack.
- Form study groups with peers. JHU’s enterprise Zoom subscription is available to students and can be used for virtual study sessions.
- Do the assigned reading before class.
- Focus on your learning and education, not your grade.