Syllabus
CSSE 120 – Introduction to Software Development

General Course Information

Course catalog description

An introduction to procedural and object-oriented programming with an emphasis on problem solving. Students will solve problems by developing software in both an interpreted language (Python) and a compiled language (C). Problems may include visualizing scientific or commercial data, interfacing with external hardware such as robots, or solving numeric problems from a variety of engineering disciplines. Procedural programming concepts covered include data types, variables, control structures, arrays, and data I/O. Object-oriented programming concepts covered include object creation and use, object interaction, and the design of simple classes. Software engineering concepts covered include testing, incremental development, understanding requirements, and teamwork.

Meeting times and places

Instructors

Delvin Defoe – Assistant Professor of Computer Science and Software Engineering

Email: defoe@rose-hulman.edu
Office phone: (812) 877-8815
Office address: Moench F-214
Home page: http://www.rose-hulman.edu/~defoe
Office hours: I strive to be in my office every day from 9 a.m. until 5 p.m. unless I’m in class or a meeting. Please stop by whenever. If my door is shut, just knock. My schedule is available from my home page

David Mutchler – Professor of Computer Science and Software Engineering

Email: mutchler@rose-hulman.edu
Office phone: (812) 877-8426
Office address: Moench F-204
Home page: http://www.rose-hulman.edu/~mutchler
Office hours: I'm usually in my office every weekday from 8 a.m. until 5 p.m. unless I’m in class (MTR 7th - 10th) or a meeting (Wednesdays 4th).

Assistants

Other Sources of Help

The CSSE lab, F-217, is staffed some weekday afternoons and some evenings Sunday through Friday, 7pm–9pm, to assist students taking any courses in the introductory sequence, including CSSE 120. Schedule

Besides the instructors and assistants, other students in the course can often be a great source of help. And they will learn more if they explain things to you.

Don’t try to be the Lone Ranger in this course. If you find that you have worked on something for 30 minutes without making any progress, it’s probably time to seek help.

Texts

Required text

Python Programming by Zelle, Cover Art

Python Programming: An Introduction to Computer Science Second Edition, by John M. Zelle

Paperback: 514 pages
Publisher: Franklin Beedle & Associates (May 18 2010)
Language: English
ISBN: 978-1-59028-241-0



Other References

Programming in C, by Stephen Kochan

Paperback: 576 pages
Publisher: Sams; 3 edition (July 18, 2004)
Language: English
# ISBN-10: 0672326663
# ISBN-13: 978-0672326660

Python Logo

Python Programming Language – Official Website

On-line: http://www.python.org/
Publisher: Python Software Foundation (July 17, 2007)
Language: English

Safari Logo

Safari Books Online – On-line access to Python (and other) books through the Rose-Hulman library

On-line: http://proquest.safaribooksonline.com/?uicode=rosehulman/

On-line books that may be helpful for CSSE120 include:

These on-line books are only accessible from on campus or after connecting to the Rose-Hulman VPN if you are off-campus.  Once connected, find Safari Books Online by following these steps:

  1. Go to the Logan Library page. (You can also get there from the Rose-Hulman homepage by choosing “Logan Library” from the QuickLinks menu.)
  2. On the Logan Library page, Logan Library databases
  3. Choose Safari Tech Books online from the Databases list, enter username and password if asked to do so.
  4. On the left side, click the small triangle beside "Programming"
  5. Click "Python" or "C"

Course Materials

We’ll use ANGEL to post grades, materials that require restricted access (like homework solutions), and links to the course schedule, assignment descriptions, slides, quizzes, and handouts. Please note the emphasis on links. All these linked materials are available via any of the several mechanisms for accessing Public AFS data. Thus, you can get to the majority of course materials:

Note: You will be accessing the course schedule page so often that you probably do not want to log into ANGEL every time you do so. We suggest that you create a bookmark (or shortcut, or Favorite link, or whatever your browser calls it) to the page so you can go to it in one click.
http://www.rose-hulman.edu/class/csse/csse120/201110/Schedule/Schedule.htm
The Day 1 reading assignment on that page contains a link to the main course page, which you will access less often than the Schedule page.

Learning Outcomes

Students who successfully complete this course should be able to:

  1. Analyze and explain fundamental programming concepts including:
    1. syntax and semantics
    2. variables, expressions, and assignment
    3. types (e.g., numbers, strings, arrays, and lists)
    4. conditional and iterative control structures
    5. functions, parameter passing, user-defined functions
    6. algorithms
    7. simple I/O
    8. modularity and structured decomposition to break a program into smaller pieces
    9. basic object-oriented features (e.g., classes, objects, methods)
    10. components of a class expressed in Unified Modeling Language (UML)
  2. Design, implement, test, and debug programs for solving mathematics, science, and engineering problems using the above concepts and an appropriate API.
  3. Work for 1.5 - 2 weeks in a team of 3-4 students on a small software development project, demonstrating effective:
    1. use of team roles
    2. team decision making
    3. division of labor
    4. conflict resolution
    5. use of the techniques from outcomes 1h and 1i.
  4. Describe the difference between the implementation of algorithms using Python and C, considering language features such as:
    1. type declarations (or not)
    2. string representations
    3. arrays vs. lists
    4. explicit pointers vs. implicit references
  5. Solve small programming problems in both Python and C.

Homework and Projects

When we give a reading assignment, we seriously expect you to read it. In-class discussions will assume that you have done the reading and understood the “easy stuff” before class. You may of course ask about any details that you do not understand. We strongly believe that reading the textbook will help you. You may be able to “get by” without reading the text. But did you come to Rose to “get by” or to be the best?

Your solutions to programming problems should be well-designed and well-documented. We will suggest working on some programming problems with another person; however we will designate some problems as individual assignments.

Grading

We plan to use the weighting scheme shown in the table below when assigning final grades.

Criteria Weight
In-class Quizzes 5%
Reading Quizzes 7
Homework and Programming Problems 23%
Major Projects (Python and C) 25%
Exam 1 10%
Exam 2 15%
Final Exam 15%

Final grades are contingent on the following:

Letter Grades

We will do our best to conform to the Rose-Hulman definition of the various grades, as described in the Academic Rules and Procedures. Note in particular that the phrase "thorough competence to do excellent work" appears there in the description of the “B” grade, and it further states that “B” and “B+” will not be given for mere compliance with the minimum essential standards of the course.

We will not grade on a curve, so every student could earn an “A” (and typically more than half of the students do so). But it will require significant effort.

Citizenship Counts!

We value your citizenship in the CSSE 120 learning community. This includes attendance, promptness, preparation for class, positive participation in class, constructive partnership in pair and group assignments, timely completion of various surveys, and peer evaluation of other students’ code and of your team members for group projects.

The in-class time in this course constitutes an important learning experience. After two unexcused absences, you must discuss continuation of the course with the instructor. Three unexcused absences may result in failure of the course.

Late Policy

Homework and programming problems must be turned in on time if you want credit for them. No credit will be given for late work except in extreme circumstances.

Email

We usually check our email several times per day (including most evenings), and we do our best to respond quickly. It is a good way to get answers to simple questions. We expect you to check your email daily (not necessarily on weekends, although even that is not a bad idea). When we send mail to you, we will use your Rose-Hulman address. If you do not currently read mail that is sent to that address, please have it forwarded to wherever you read mail.

When you send course-related email to us, please begin the Subject: line with CSSE 120:, so that we can quickly pick it out from among the dozens of daily email messages that we receive. If you have an urgent CSSE 120 question, you can email the entire course staff (instructors and TAs) by sending to csse120-staff@rose-hulman.edu.

Electronic Distraction Policy

We do our best to keep class interactive. But we recognize that sometimes it is hard as a student to stay focused on the class. With laptops in class, there are many more ways to become distracted. Unfortunately these distractions are much more pernicious, since it is very easy to get drawn into things like IM conversations or RSS feeds.

We strongly encourage you to turn off IM and email software and only use other software for things directly related to class. If you choose to use non-class-related software during class, then you must sit in the back row. Doing so will prevent your classmates from being distracted by what is on your screen.

Integrity

Recall the Institute policy on academic misconduct:

“Rose-Hulman expects its students to be responsible adults and to behave at all times with honor and integrity.”

Exams and homework will be done on an individual basis. The simple rule of thumb for individual work is:

Never give or use someone else’s code or written answers.

Such exchanges are definitely cheating and not colaboration. The departmental statement on academic honesty has more detailed advice.

We encourage you to discuss problems and general approaches to solving them with other students. However, when it comes to writing code, it should be your own work (or the work of your group if it is a group or partner assignment). If you are having trouble understanding how some library code works or pinning down a run-time or logic error in your program, by all means talk to someone about it.

If you use someone else’s ideas in your solution (or any other work that you do anywhere), you have to:

If you are ever in doubt about whether some specific situation violates the policy, the best approach is to discuss it with your instructor beforehand. This is a very serious matter that we do not take lightly. Nor should you.

In general, you should not look at another student’s code to get ideas of how to write your own code. Beginning the process of producing your own solution with an electronic copy of work done by other students is never appropriate.

Plagiarism or cheating will result in a negative score (i.e., less than zero) for the assignment or exam. Egregious cases will result in a grade of “F” for the course. More importantly, such dishonesty steals your own self-esteem. So don’t cheat.