600.120 Intermediate Programming [Selinski]
Syllabus

 

Intermediate Programming Syllabus

600.120 Intermediate Programming
Course Syllabus -- Fall 2014


SectionTimeInstructorOfficeEmailHours
01MWF 1:30-2:45Joanne SelinskiMalone 225joanne -at- cs.jhu.eduMW am, Tu pm
02MWF 3:00-4:15Scott SmithMalone 219scott -at- cs.jhu.edu
03MWF 4:30-5:45Adam Teichert Hackerman -at- cs.jhu.edu
04MWF 12:00-1:15Joanne SelinskiMalone 225joanne -at- cs.jhu.eduMW am, Tu pm

Course Web Pages: ugrad.cs.jhu.edu/~cs120 for lecture materials and assignment details, blackboard.jhu.edu for assignment submissions and grades, and Piazza for Q&A, discussions and announcements. These are VERY important sources of course information and must be checked regularly!!

Course Description: This course teaches intermediate to advanced programming, using C and C++. (Prior knowledge of these languages is not expected.) We will cover low-level programming techniques, as well as object-oriented class design, and the use of class libraries. Specific topics include pointers, dynamic memory allocation, polymorphism, overloading, inheritance, templates, collections, exceptions, and others as time permits. Students are expected to learn syntax and some language specific features independently. Course work involves significant programming projects in both languages. Pre-requisite: AP CS, 600.107, 600.112 or equivalent.

Course Outcomes: Upon completion of this course students should be able to:

  • Write portable, modular and safe C code.
  • Develop complex object oriented systems in C++.
  • Use a variety of libraries for C and C++.
  • Work in a Unix environment.
  • Use development, measurement and testing tools.
  • Develop software in a small team.

Course Schedule: A detailed schedule will evolve as the semester progresses.

Textbooks: Both texts were chosen to be very concise, and offer much programming wisdom beyond simply describing language features. Since they are small, we suggest reading them carefully & thoroughly.

  • Required: Andrew Koenig & Barbara E. Moo, Accelerated C++, Addison-Wesley, 2000.
  • Recommended: Brian W. Kernighan & Dennis M. Ritchie, The C Programming Language, Prentice Hall, Inc., 2nd edition, 1988.

If you prefer a text with fuller explanations, Joanne probably has something you can borrow. Recommended: Deitel & Deitel, C++ How to Program, electronic edition available through MSEL. Additionally, you will be expected to read various tutorials that will be posted on the course website.

Grading: Students will complete programming projects, a midterm and a final. Each assignment will be assigned a point value. Your overall homework average will be computed as total points earned divided by total points possible. You are also expected to attend and actively participate in class. These grading components will be weighted as below. Letter grades for the course will be subject to my evaluation of your overall class performance; do not expect a curve. Please keep your own record of your grades so that you will know your standing in the course and can double-check my records. All grades will be available on Blackboard.

  • 5% - participation
  • 65% - programming assignments (including team project)
  • 15% - mid-term (, in class)
  • 15% - final (, in class)

Programming Logistics: All programming assignments must compile according to individual assignment specifications, on approved platforms (such as the CS undergrad unix servers). You are welcome to use any development environment you like, as long as your program compiles as specified with gcc/g++ and runs on the undergrad unix servers. NO CREDIT WILL BE GIVEN FOR CODE THAT DOES NOT COMPILE! This means that all components of a program must compile together with the required options or you will not receive any credit for any of them!! Many students prefer to write programs on their own computers. However, students will be given access to the CS Undergraduate Labs in Malone Hall (122 and 3??) in order to meet with course assistants and will be given a unix account from the CS department. If you don't already have an account or access, you must get a class account form. You will then need to see Steve DeBlasio (where/when??) with your Jcard and form in order to get access.

Late policy: No late homework or programs. Assignments will usually be due on Tuesdays and Fridays. If a program is not working perfectly, turn it in as is with detailed comments as to which parts are complete, and which are not. Remember: NO CREDIT WILL BE GIVEN FOR CODE THAT DOES NOT COMPILE! Exceptions for illness will e given only by instructors (not by any TAs). Exceptions for poor planning will NOT be given. Now is a good time to develop incremental coding skills, so that you always have a working program to turn in, even if parts are incomplete. The summer session moves very quickly - please set aside minimally 30 hours/week for this course outside of class time.

Collaboration: Some programming assignments will be individual, others will require colloboration with a specified partner or small team. An individual assignment means that you may not consult other students for help, only the TAs or instructor. Any collaboration beyond the specifications of an assignment will be reported as an ethics violation. For homework help you may only consult the instructor, the teaching and course assistants, or tutors. You must abide by the Computer Science Academic Integrity Code (see below), as well as the University's Ethics Code.

Plagiarism: Code reuse is an important feature of moderm programming techniques. However, you are expected to write most of the code for your assignments from scratch. Using the language libraries according to assignment specifications and reusing your own code from prior work in the course is expected. Doing a web search to find and use partial solutions is an ethics violation. Reusing code from examples we do in lectures or from the textbooks is acceptable, but only with proper citation (a comment indicating the original source). Any uncited or illicit code reuse is a very serious ethics violation.

Attendance: You are expected to attend and actively participate in all class sessions, which will include hands-on code development and other activities. Inevitably, students who do not attend regularly do poorly on tests and assignments. You are responsible for all material presented while you are absent. If you have trouble or need extra help, don't hesitate to contact a teaching assistant or instructor. Please don't wait until you're hopelessly behind.

Miscellany: Any student with a disability who may need accommodations in this class must provide your instructor with an accommodation letter from Student Disability Services (385 Garland, studentdisabilityservices@jhu.edu, (410) 516-4720). In addition, you must email your instructor at least two weeks prior to any tests to request accomodations.


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