600.112 Intro Programming for Scientists & Engineers (IPSE)Course Syllabus – Summer 2014

Meetings: MoTuThFr 1-3:30
Instructor: Dr. Joanne Selinski; Croft 222, (410)516-4117; joanne -at- cs.jhu.edu; Tue, Thu mornings are best

Course Web Pages: http://www.cs.jhu.edu/~joanne/cs112 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: An introductory "learning by doing" programming course for scientists, engineers, and everybody else who will need basic programming skills in their studies and careers. We cover the fundamentals of structured, modular, and (to some extent) object-oriented programming as well as important design principles and software development techniques such as unit testing and revision control. We will apply our shiny new programming skills by developing computational solutions to a number of real-world problems from a variety of disciplines. Students are encouraged to enroll into the appropriate sections of 600.108: Intro Programming Lab concurrently with this course. Students may receive credit for 600.107 or 600.111 or 600.112, but not for more than one. This course may not be used for the CS major or minor requirements, except as a substitute for 600.107.

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

·  Write portable, modular Python code.

·  Understand the basic concepts and principles of structured programming.

·  Be able to design, write and test a Python program to implement a working solution to a given problem specification.

·  Be able to install and use a variety of library modules.

·  Understand the basic concepts and principles of object oriented programming.

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

Resources: We will use several resources for this course.

·  The primary text is available in print as well as on-line (free) through JHU's library: Miller & Ranum, Python Programming in Context (either edition). See the main course website for text related links.

·  We also recommend the author's interactive learning system: http://interactivepython.org/runestone/static/thinkcspy/index.html

·  Many on-line tutorials and resources also exist, and several are linked from the main course webpage including the official Python documentation.

Grading: Students will complete weekly 3-part programming assignments, a midterm and a final. Each assignment will be assigned a point value. 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.

·  35% - programming assignments

·  20% - mid-term (Thursday, 6/12)

·  35% - final (Friday, 6/27)

·  10% - participation, based largely on in-class activities

Assignment Logistics: All programming assignments must be free of syntax errors on the standard course platform (Idle/Lubuntu/VirtualBox). NO CREDIT WILL BE GIVEN FOR CODE WITH SYNTAX ERRORS! Each program grade will be based not only on correctness, but also on style and good programming techniques. Assignments will be comprised of an in-class warm-up (appetizer), a lab project (entree), and homework (dessert).

Late policy: No late homework or programs. Assignments will usually be due on Wednesdays. 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 be given only by Joanne (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 working programs to turn in, even if parts are incomplete. Please set aside roughly 20 hours/week for this course outside of scheduled lectures.

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. Students who miss class due to illness, religious holidays, etc. should inform Joanne as soon as possible if requesting any accomodations as a result. If you have trouble or need extra help, don't hesitate to contact a teaching assistant or me. Please don't wait until you're hopelessly behind.

Collaboration: The only group work in this course will be problems solved during lectures, and if you'd like, ungraded textbook problems. You must solve your graded programming assignments without consulting other students. For homework help you may only consult the instructor, the teaching 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.

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

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