Syllabus

Syllabus
Computer Science EN.601.220
Intermediate Programming
Fall 2025 (4 credits, E, in person)

(The instructors reserve the right to make adjustments to this syllabus as deemed necessary with notice.)

Course Description

Instructors

Joanne Selinski, Teaching Professor
joanne@cs.jhu.edu,
https://www.cs.jhu.edu/~joanne,
Office hours: Mon 4-5p Malone 225, Thu 4-5p on zoom
Zoom: https://wse.zoom.us/my/jselinski

Ali Darvish, Senior Lecturer
darvish@jhu.edu,
https://www.cs.jhu.edu/~darvish/,
Office hours: TBD
Zoom: https://wse.zoom.us/my/darvish

Patricio Simari, Senior Lecturer
psimari@cs.jhu.edu,
https://www.cs.jhu.edu/,
Office hours: Mon & Wed 12-12:50, Malone 240b
Zoom: https://wse.zoom.us/my/pdsimari

Meetings - all in Maryland 310

Sec 01 (Selinski): MWF 10:00 am – 11:15 am

Sec 02 (Darvish): MWF 12:00 pm – 1:15 pm

Sec 03 (Simari): MWF 1:30 pm – 2:45 pm

Sec 04 (Simari): MWF 3:00 pm – 4:15 pm

Course Assistants

Will be listed on the main course website Staff page.

Textbooks

Online Resources

The following sites will be used heavily during the course:

Course Objectives

Upon successful completion of this course, you should be able to:

This course will address the following ABET Outcomes:

  1. (SO1) Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions.

  2. (SO2) Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline. in computing practice based on legal and ethical principles.

  3. (SO5) Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.

  4. (SO6) Apply computer science theory and software development fundamentals to produce computing-based solutions.

Course Topics

General Course Philosophy

This course will focus more on learning than on assessment. While we will use grades to let you know how you are doing, we hope that your goal is learning the material, rather than “getting a good grade.” In the end, the best way to get a good grade is to develop an interest in learning and engage with the material in a self-directed fashion. Besides, in the long run, the knowledge and skills you acquire are far more important than the grade is.

That said, be aware that the main difficulty many students have with this course is time management. It will be a lot of work, and if you don’t budget your time well, you may find yourself with a grade that does not reflect how well you understand the material. Additionally, while there are lots of resources provided to help you succeed, we cannot force you to use them; it is important to avail yourself of these resources, particularly office hours.

Course Approach

We take a flipped classroom approach to the course, with an emphasis on active learning during class sessions. Part of your homework will be to prepare for class by watching video lessons. During class sessions you will extend your learning by working with your instructors and classmates to discuss new concepts and apply them to in-class exercises, rather than listening to a lecture.

Expectations & Grading

All students are generally expected to actively participate in the scheduled sessions of this course by answering and asking questions and solving the learning exercises. You are also expected to learn via the posted material, assignments, and projects. Our class time will include a recap of the new material, discussion on the important concepts, review of previous exercises, and live coding exercises. Before each session, students are expected to go through the related material posted on the course website, and finish the coding exercises from the prior session. Attendance will be taken near the end of each class session, based on exercise participation. Students who finish the coding exercises before the end of class will need to demo their solutions to a staff member for attendance credit before leaving. You are strongly encouraged to stay in the session and work on homework instead of leaving early.

There will be one midterm exam and a final exam, comprising a significant portion of your grade. These will be completed individually and on paper, which is why you should complete your homework as individually as possible to learn the material. The midterm exam will cover the topics of the first half of the class (C material) and the final exam will focus on the second half (C++ material). The exams are designed to assess your knowledge of programming in C and C++ as well as your problem solving ability, but not your knowledge of specific tools or technologies discussed in class.

Students will be expected to complete a variety of computer programming assignments, as well as written homework assignments. Two projects must be done in pairs or groups as specified; others are to be completed and submitted individually, with assistance as needed from course staff. See the specific assignment page for details of what is permitted for a particular assignment. Failure to follow guidelines will be a violation of the academic ethics code, and reported and penalized accordingly.

Collaboration, Code Reuse and Citations

While code reuse is an important feature of modern programming, for this course, you will be expected to write most of the code for your homework assignments from scratch. You may use language libraries (according to assignment specifications), and you may always reuse your own code from prior work in the course. Using and adapting code from class examples, slides, or the textbook is acceptable and expected. While you are strongly encouraged to seek assistance primarily from course staff, some collaboration with others in the course and/or AI-assisted tools is permitted. You may discuss homework approaches and get help with code snippets, but you must not generate, co-develop or share whole solutions. You are responsible for understanding and being able to explain any code in your solutions that you did not generate yourself. All collaboration (including internet/AI-assistance) must be clearly documented in your submission, using inline comments to delineate wherever non-original code appears. For example,

// begin collaboration with chatGPT4
   [actual non-original code goes here]
// end collaboration with chatGPT4

Any code segment resulting from collaboration should be no more than ten lines long. Ethics violations will include: failure to cite collaboration, copying substantially from others, sharing substantial code with others, and downloading/generating full solutions from the internet (including chatGPT or similar AI-assisted coding tools).

WARNING

AI tools can help with brainstorming, boilerplate generation, and learning alternative approaches to coding problems. However, responsibility for all submitted code rests solely with the submitting student(s). You must understand every line of code that you submit in assignments, projects, and exams. If you use AI to generate code:

Homework assignments are expected to take a considerable amount of time; start early and budget your time well. On average, it may take 5-10 hours per week, depending on the assignment and your approach. Additionally, try to use incremental development so that even if you run out of time, you can still turn in code that implements some of the desired functionality (with a README file and comments explaining what’s missing). Keep in mind that half the features working all the way will get you a lot more partial credit than all the features half-way working. Good use of the version control system will significantly help with your incremental development. For each commit, you should update your README file to outline what’s missing and what’s done, and try to keep each commit a submittable version. This is a good practice, and can come in very handy in case you accidentally delete the local copy of your homework!

Students are expected to learn material outside of class time and homework, as well. We will generally provide links to tutorials, references, and other resources for each topic. Students are expected to read these, as well as seek out other resources on their own to further their understanding of topics. There is a wealth of programming information on the internet; if one explanation doesn’t make sense, you can probably find another that does. Course staff can help you understand these resources as well.

Homework submission policy

Assignments will be due by 11:00 pm on the due date (unless otherwise indicated on the course Piazza site). Non-compiling code will earn a score of zero, so students are strongly encouraged to double-check that all submitted code fully compiles with no errors or warnings in the standard course compilation environment. We will accommodate late submissions in several specific ways:

Given these policies, please plan to get your homework done and turned in early so that if you encounter any last-minute delays, it will not hurt you too badly. Additionally, Gradescope will allow multiple submission attempts; we will simply grade the last one. So it’s a good idea to develop your program incrementally, and turn in a fully-compiling (even if only partially complete) version every day or so.

Deadline exceptions can only be made by an instructor (not TAs/CAs), and will only be considered in the circumstances outside the control of the student (e.g., serious illness, death of a relative, etc.). If you must request an exception, do so as early as possible; it is easier to get an exception if you ask before an assignment is due, rather than after. No exceptions will be given for failure to plan ahead or simply having “too much work.”

In-class Exercises

Many of the course topics will be supported by an exercise. Although these exercises do not count towards your course grade, they are a very important part of your learning, and as such we strongly recommend that you complete them fully. We will review solutions to the exercises in subsequent class sessions, but we will not post them. If you are having trouble completing an exercise, seek help in office hours, or on Piazza. We will have an option for you to submit your solutions on gradescope to get autograder feedback on them.

Code Reviews (Optional)

Students can benefit from close review of their code in discussion with a course instructor. You have the option to schedule one or more reviews of your individual coding assignments with a course instructor. These will typically take 30-45 minutes each, and successful completion of code reviews for 2 different assignments will result in a 100% “fudge” grade. “Successful completion” is based on your ability to explain your code to the instructor and answer what-if questions about it. Each code review must take place within the three weeks immediately following that homework’s due date.

Fudge Grade

Students typically do better in some aspects of the course than others. The “fudge grade” is a percentage of your final grade that duplicates your best performance from the individual grade categories listed below or the optional code reviews, but not group projects. For example, if you successfully complete 2 code reviews, then your fudge grade will contribute a full 2 points to your final grade. If you don’t have 2 successful code reviews, but your highest individual grade category is 90% in written homework, then your fudge grade will contribute 1.8 points towards your final grade.

Grading Breakdown

All scores and grader commentary on your homework and project submissions, as well as exams, will be available via Gradescope. Please keep your own record of your grades so that you will know your standing in the course. At the end of the term, letter grades are generally assigned according to the following scale. You should not expect a curve in this course.

Interval Letter grade
[97,100] A+
[93,97) A
[90,93) A-
[87, 90) B+
[83,87) B
[80,83) B-
[77, 80) C+
[73,77) C
[70,73) C-
[67, 70) D+
[60,67) D
[0,60) F

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 Policy:

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. You must solve all homework and programming assignments in accordance with the collaboration policies above. For example, you must not look at anyone else’s complete solutions (including program code) to your homework problems. This includes limited use of AI tools such as ChatGPT and GitHub Copilot. You may also not seek out solutions from coursework or examinations from previous semesters nor make these solutions available to others. However, you may discuss assignment specifications 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.

Report any violations you witness to the instructor. You can also contact:

You can find more information about university misconduct policies on the web at these sites:

Mental Health Statement

Many students struggle at times with stress and mental health concerns. Johns Hopkins University Mental Health Services has a range of services to support students with their mental health. Beyond clinical services, JHU also has many resources available to support overall student well-being.

For 24/7 behavioral health support, 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 link individuals in crisis to ongoing support services in the days and weeks that follow. BHCST can be reached directly at 410-516-9355 or by calling Public Safety, 410-516-4600 or 7777, and asking to be connected to a BHCST clinician.

If you have concerns about a yourself or another student, please contact:

Students with Disabilities – Accommodations and Accessibility

Johns Hopkins University is committed to providing welcoming, equitable, and accessible educational experiences for all students. If disability accommodations are needed for this course, students should request accommodations through Student Disability Services (SDS) as early as possible to provide time for effective communication and arrangements. For further information about this process, please refer to the SDS Website or email SDS Homewood: studentdisabilityservices@jhu.edu.

Inclusivity

Johns Hopkins University is committed to creating a classroom environment that values the diversity of experiences and perspectives that each student brings. Everyone deserves 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. We invite you to help create a welcoming, vibrant and intellectually engaging 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, growth often requires being pushed beyond your comfort zone. However, at no time in this learning process should someone be singled out or treated unequally based on any aspect of their identity (visible or invisible).

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 seek mutually acceptable resolutions and accommodations. Reporting will never impact your course grade. You may also share concerns with the department head, the Director of Undergraduate Studies, the WSE Associate Dean of Outreach and Belonging (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).

Family accommodation policy: You are welcome to bring a family member to class on occasional days when your responsibilities require it (for example, if emergency childcare is unavailable, or for the health needs of a relative). In fact, you may see my children in class on days when their school is closed. Please be sensitive to the classroom environment, and if your family member becomes uncomfortably disruptive, you may leave the classroom and return as needed.

Deadlines for Adding, Dropping and Withdrawing from Courses

You need to be be aware of and comply with the deadlines of “add a course”, “drop a course”, etc. Also, for more information on grading policies and other academic policies, see https://e-catalogue.jhu.edu/engineering/full-time-residential-programs/undergraduate-policies/academic-policies/grading-policies/

Computer Issues

Student laptop repair is available in the Technology Store, located within JHU’s Campus Store, 33rd & St. Paul St. Please contact 410-516-0448 or techstore@jhu.edu for questions. More info at Information Technology Services & Support.

Additionally, the Center for Student Success and Student Outreach and Support maintain a Laptop Loaner Program, which is open to all KSAS and WSE undergraduate students.

The Office of Academic Support at JHU

All programs are free to students. Please see https://academicsupport.jhu.edu and below for specifics: