600.112 Intro Programming for Scientists & Engineers (IPSE) [Selinski]
Syllabus

 

IPSE Syllabus

600.112 Intro Programming for Scientists & Engineers (IPSE)
Course Syllabus -- Fall 2015


Meetings: Mon & Wed 3-4:15p in Shaffer 301
Instructor: Dr. Joanne Selinski; Malone 225, joanne -at- cs.jhu.edu; see website for office hours
TA: Long Qian, in addition to several course assistants

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, announcements, and grading questions (see posting policies). 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.

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.

  • Primary text: Zyante (interactive online textbook) - Programming in Python 2.7 (register at zybooks.com, book code: JHUEN600112Fall2015, subscribe).
  • Videos: Mike McMillan, Learning Python Programming
  • Many on-line tutorials and resources also exist, and several are linked from the main course webpage including the official Python documentation. You may also use the texts by Miller & Ranum or Zelle from prior semesters if you prefer.

Computer Use: Students are expected to have laptops available for completing assignments and doing in-class work, including Blackboard quizzes. You will be required to install the necessary (free) software for programming in Python on your own computer. (Details to be provided.)

Grading: Students will complete weekly 3-part programming assignments. Each assignment will be given a point value, and we will work on some parts during our class meetings. There will also be regular quizzes, and a final, weighted according to the chart 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.

  • 45% - programming assignments
  • 40% - quizzes (in class)
  • 15% - final (Wed 12/16, 2-5p)
  • bonus - up to 3 bonus points based on participation in-class and on-line (text exercises and Piazza answers)

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 three parts: a warm-up (appetizer), a main project (entree), and an extension (dessert). You will be expected to do the warm-ups before class, and then we'll work on the main projects during our class sessions, leaving the extension for you to do as homework.

Bonus Points: Students may earn up to 3 bonus (percentage) points for significant participation in class, on Piazza (answering questions & helpful notes), and timely completion of Zyante text exercises.

Late policy: By classtime every Wednesday two things will be due: the warm-up for the current assignment and the complete project (all parts) from the prior week. Each complete project will carry a 2 day late grace period, during which you may submit but will incur a (raw) 5 point deduction, regardless of when in that timeframe it is submitted. After the grace period, assignments will not be accepted.
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 CANNOT BE EXECUTED! 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 10 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, please contact a teaching assistant or me immediately. It will be very difficult to catch up if you fall behind.

Collaboration: We may do some paired programming exercise during lectures, and will have a small group project at the end of the semester. Where not explicitly stated otherwise, you must solve your graded programming assignments without consulting other students. For homework help you may only consult the instructor, the teaching assistant(s), 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 modern 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, adapt 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, studentdisabilityservices@jhu.edu, (410) 516-4720). In addition, you must email Joanne 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).