Syllabus

Syllabus
Computer Science EN.601.220
Intermediate Programming
Spring 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

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

Patricio Simari, Senior Lecturer
psimari@cs.jhu.edu,
https://www.cs.jhu.edu/,
Zoom: https://wse.zoom.us/my/pdsimari

Meetings - all in Maryland 310

Sec 01 (Darvish): 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/or Piazza, and finish the coding exercises from the prior session.

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

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. Downloading full or partial solutions from the internet (including chatGPT or similar AI-assisted coding tools), however, is an ethics violation. Using code from class examples, slides, or the textbook is acceptable, but you must cite the source properly in a comment in your code describing the original source.

There will be one midterm exam and a final exam. 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.

Homework assignments are expected to take a considerable amount of time; start early and budget your time well. On average, it may take 5-15 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.

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 (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 the solutions to these exercises either fully or just the important parts in class sessions. In general, we will not post solutions to the in-class exercises — 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 and get autograder feedback on them.

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 (participation included), but not group projects. For example, if your highest individual grade category is 90% in written homework, then your fudge grade will contribute 2.7 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. 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. This includes AI tools such as, but not limited to, 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 (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.

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:

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 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: studentdisabilityservices@jhu.edu or visit the SDS website https://sds.jhu.edu/.

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 participate 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 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 [link to heads/DUS document], 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 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, Levering Hall Sherwood Room (113) Monday-Friday from 9:00am-5:00pm. 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 below for specifics: