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.

Pre-requisites: No programming background is assumed or required for this course.  However: the course does move very fast and the material is cumulative.  Do not get behind!

Meeting times and places

  • Section 1 (Anderson): 1-2nd periods Monday, Tuesday, and Thursday in O269
  • Section 2 (Lo): 4-5th periods Monday, Tuesday, and Thursday in O269

Instructor

Claude Anderson – Professor of Computer Science and Software Engineering

Email: anderson <at> rose-hulman <dot> edu
Office phone: x8331
Office address: Moench F-210
Home page: http://www.rose-hulman.edu/~anderson
Office hours: I am usually on campus from about 7:30 AM until 4:30 PM (sometimes I will be at the gym or in a meeting; that should usually be reflected in my schedule). When I am not in class or meetings, I am usually in my office, and happy to talk with you. You can find my calendar at:
http://www.google.com/calendar/embed?src=anderson%40rose-hulman.edu&ctz=America/New_York   The "Week" view is probably best.

 

Alex Lo – Visiting Professor of Computer Science and Software Engineering

Email: loaj at rose-hulman
Office phone: (812) 877-8759
Office address: Moench F-224
Home page: http://www.rose-hulman.edu/~loaj/
Office hours: I strive to be in every day from 8 a.m. until 5 p.m. Please stop by whenever. If my door is shut, just knock. I am also frequently available by email before 9pm. My Microsoft Outlook calendar is up to date if you want to check if I will be in or schedule a meeting time.


Course Assistants

Section 1 in-class
Dallas TrederDallas Treder
trederdj @ rose
Eric VernonEric Vernon
vernone @ rose
Section 2 in-class
Nicholas KamperNicholas Kamper
kampernj @ rose
Kurtis ZimmermanKurtis Zimmerman
zimmerka @ rose
Graders
Arda TugayArda Tugay
tugayac @ rose
 
   

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

Publisher: Franklin Beedle & Associates (May 18 2010)
ISBN: 978-1-59028-241-0

Other References

Python Logo

Python Programming Language – Official Website

On-line: http://www.python.org/
Publisher: Python Software Foundation

C Programming resources
See: Course Resources web page

Course Materials

We will use ANGEL to post grades and materials that require restricted access (like quizzes and homework solutions). All materials for the course will be in ANGEL, linked from ANGEL, or in Subversion repositories that we will create for you.

Many of the materials in ANGEL are actually links from ANGEL to files posted on the Rose web server, so you can access them directly without logging in to ANGEL.

We suggest you bookmark the ANGEL page for quick reference.

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
Quizzes 10%
Homework and Programming Problems 20%
Major Projects (Python and C) 20%
Exam 1 15%
Exam 2 15%
Final Exam 20%

We reserve the right to adjust your grade up or down based on course citizenship (good or bad).

Final grades are contingent on the following:

  • You must complete the two major projects to pass the course.
  • You must have a passing average on the exams to pass the course.
  • Attendance is required, as detailed below.

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” but it will require significant effort.

Citizenship Counts!

We may adjust your overall average up or down by up to 5 percent, based on your citizenship in the CSSE 120 learning community. This includes attendance, promptness, preparation for class, positive participation in class and the online discussion forums, 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. You should be there. Two unexcused absences will affect your Citizenship grade. Three or more unexcused absences may result in failure of the course.

Bug Reports

If you find errors in the textbook or any of our course documents, please report them via the bug reports discussion forum on ANGEL. We will give a small number of extra credit points to the first person to report a given bug. The number of points will depend on the severity and subtlety of the bug that you report. We recommend that you subscribe to that discussion forum (and to the other course discussion forums).

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.

Communication

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 any CSSE 120 question, we recommend that you email the entire course staff (instructors and TAs) by sending to csse120-staff@rose-hulman.edu.  Those replying to these messages should use "reply all" - this will ensure that follow up questions can be answered by someone else if needed.

Discussion forums on ANGEL are a place where you can discuss various aspects of the course, including the assignments, with other class members. The student assistants and we will read the discussions and sometimes respond to your posts. One way to enhance the Citizenship part of your grade is to post thoughtful questions, answers, and comments to the forums.

We welcome your suggestions for the course. Please tell us about things in the course that help you to learn, and things we might do to improve the course for you. If there is something that you'd like to tell us, but don't feel comfortable with us knowing who it comes from, you can use the Anonymous Suggestion Box survey that we have provided on ANGEL.

 

Distractions Policy

We do our best to keep class interactive. With laptops and cell phones in class there are many more ways to become distracted. When these distractions disrupt class learning your "Course Citizenship" grade will suffer.

We strongly encourage you to turn off IM and email software and only use other software for things directly related to class. Turn your cell phone off or put it in "air-plane" mode.

Sights/Smells/Sounds:  As would be expected in the workplace, please be respectful of those around you.  If your visual appearance (e.g., offensive computer desktops), smell (e.g., halitosis or tobacco), or sounds created (e.g., cell phone, computer noise, or snoring) are disruptive to class, you will be asked to leave until the issue can be corrected

Exceptions / Absences / Etc

There are some valid reasons why you may have to miss class or turn in late work (sickness, unavoidable travel, personal reasons).  In these cases permission can be acquired when requested in advanced.  If you foresee needing any kind of exception contact the instructor as soon as possible.  "It's easier to ask for forgiveness than it is to get permission" is not the case - it the opposite is true here and in the workplace.

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 collaboration. 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:

  • give credit to that person in the comment section of your program, and
  • be sure that you understand it as well as if it were your own.

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.

Caveat

The instructor reserves the right to modify the course content, schedule, policies, etc. outlined in this syllabus.