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