SE1011
Software Development I

This is an old version of this course, from Fall 2014. A newer version is available here.

Course feedback forms are available in the feedback folder.

Emphasis is placed on translating written problem descriptions into robust software solutions. Topics covered include Java program structure, algorithmic problem solving and modularization, I/O statements, control constructs, looping techniques, class libraries, user defined classes and methods, arrays, and ArrayLists. (prereq: none) 3 lecture hours 2 lab hours 4 credits (3-2-4)

Basics

Instructor
Josiah Yoder
lıɐɯə
npǝ˙ǝosɯ@ɹəpoʎ
Office
L344 (Library, 3rd floor)
Office Hours
See below
 
Phone
ƖƐ96 ᔭᔭᔭ ϛ9ㄥ Google Voice; rings my office, cell-phone, and computer at the same time.
Textbook
Introduction to Programming with Java: A Problem Solving Approach, 2nd Ed., by Dean and Dean, McGraw-Hill, 2014, ISBN: 978-0-07-337606-6

Outcomes

On successful completion of this course, the student will:

  • Design and document an algorithmic solution for a given problem statement
  • Use if/if-else/switch statements to control program flow in algorithmic solutions
  • Select the appropriate selection control statement for a given task
  • Create and interpret complex expressions that use relational and boolean operators
  • Use while/do-while/for statements to control repetition in algorithmic solutions
  • Select the appropriate repetition control statement for a given task
  • Translate UML class diagrams into Java code
  • Design and implement simple classes
  • Design and implement class and object methods
  • Use existing Java class libraries
  • Design and implement simple Java programs
  • Declare and use collections of primitive and object data using arrays
  • Declare and use collections of object data using ArrayLists

(These are the official EECS/MSOE outcomes for this class.)

Learning Resources

You can learn by:

Me

I want to help you learn. If you have any ideas about how I can improve, please share them with me. This includes changes to the syllabus, class time, lab time, and things I may not have thought of.

I enjoy talking with you. Feel free to drop by my office or email me a time that you would like to meet. You can drop by any time, but I will always be in my office during office hours1.

My Schedule (Office Hours)

Time Mon Tue Wed Thu Fri
8:00 Class prep CS2910
S343
Grading Class prep Grading
9:00 CS2910
S243
CS2910
S243
10:00 CS2910
S243
CS2910
S343
Travel
to campus
CS2910
S243
Travel
to campus
11:00 Class prep Office
Hour
Office
Hour
Office
Hour
12:00 Lunch Lunch Lunch Lunch Lunch
1:00 Dept Mtg Class prep Class prep Grading Class prep
2:00 SE1011
S359
SE1011
S359
SE1011
CC53
SE1011
S359
3:00 Office
Hour
Office
Hour
Admin
4:00 Admin Admin Admin SE1011
Planning
 

The book

(See Textbook in the basics table above.)

This website

These pages are available from the right menu. They contain:

  • Overview
    • This page
  • Schedule
  • Outcomes
    • Exam study guide: Detailed list of things you will be able to do, categorized by week and topic
    • Tips for using Software (e.g. IntelliJ and Enterprise Architect (EA))
  • Homework
    • The first homework is already available!
  • code
    • Day-by-day coding examples. The folder (package) classX_YY_... holds the code example for week X, day YY (counting only the days we have class).
  • slides
    • Day-by-day lecture slides. These are numbered similarly to the coding examples.

Class

While I don't mind if you have to skip a class, class attendence is essential so you can learn what material I expect you to know, what HW and quizzes there will be, etc.

In class, I expect you to focus completely on class material. Instead of checking your email or browsing facebook, participate in the class activities and take notes of what you are learning.

I believe that taking your own organized notes is one of the best things you can do to learn anything (even if you are studying on your own). I expect you to take your notes in a three-ring binder. In week two, at the end of the second class day, I will collect your binders from the first five days of class as a single HW assignment. For each day of class, write the class name (SE1011), your name, the date or week/day of class in the top-right corner of the page. On each day of class, I will point out key things that I would like you to write in your notes. In addition to these, you can write anything else that you find useful to understand the material. It's OK if you happen to lose a day of notes or miss a class.

If it becomes necessary to consider dropping the class, I am happy to give you advice, but I want you to make the final decision (with the help of your academic advisor). So if you stop coming class, I will not drop you, but instead give you whatever grade you have at the end of the quarter, even if it is an F.

Homework

Homework is your primary opportunity to dig deeper in the theory of programming. I will give an opportunity to ask quesions about the HW at the beginning of each class. I will collect some HW, announced after you've had a chance to ask questions, and grade it as Satisfactory (S) or Unsatisfactory (U), and discuss it when I return it to class. To keep things simple, you cannot receive credit for a HW assignment after the initial collection. You can also ask me about HW during office hours.

To organize your HW, write the class name (SE1011), your name, and the date (or Week/day of class), in the top-right corner of each page. If you use multiple pages, staple them together. Use paper that does not leave a ragged edge if/when you tear it out of the book. You may use scrap paper (paper already printed on one side) if you like.

In addition to the required homework problems, you may want to ask and answer your own questions. Perhaps things like:

  • Why does this compiler error occur?
  • Is it possible to _____?
  • Can I combine _____ and ____ into a single program?
  • Why?

If you come up with a question, but can't find an answer, ask me! Perhaps I can find it. If it is really good, I might share it with the rest of the class

You may also want to do some of Dr. Taylor's practice problems.

Labs

This quarter, we are learning the foundations of programming. To ensure that you master this material, Labs are individual.

Because working in lab is one of your best opportunities to interact with me and other students, 5 to 15% of the participation grade may be assigned to "in-lab completion" — graded tasks completed in lab.

Labs will be turned in electronically. These are due at 11pm, with a 1 hour grace period. On uploaded PDFs, include your name, date, and the assignment name. Also, please only submit a lab once. Multiple submissions are hard for me to keep track of, especially if I've already started to grade the first one.

Untested code is buggy. I find that if your code doesn't compile or hardly runs, that there are many other errors in it. You can only get partial credit for a lab if it compiles and runs. If it does not compile & run, please fix the lab and submit it later, or drop a feature or two to get it running again (often the best option).

From my experience, turning in all labs on time is the number one indicator that you will pass a class. For every day that goes by beyond the original deadline, it gets much harder to catch up on a lab. As a result, after the deadline, you can receive partial credit for a lab, up to 10% off per day.

At the end of the quarter, all assignments must be turned in by 4:30pm on Friday so that we can wrap things up and I can turn the grades in on time.

Please start early and ask me for help if you get stuck.

Learning Assessment

We will use the following mix of metrics to measure your learning:

Lab projects 25%
Homework 5%
Quizzes 10%
Exam I 20%
Exam II 20%
Final Exam 20%
Total 100%

I sometimes make mistakes in tallying points. If you become aware of an error in grading, please send me an email, and I will fix it and reply by email.

Discussing things in person is a great way to start to resolve an issue. Please send me the email, too to help me keep track of things.

Please maintain your own records of your grades and check them against whatever summaries I send to you, and let me know if I'm missing an assigment that you've turned in, etc.

Quizzes & Exams

Quizzes will be announced in class at least one day in advance. They will usually be on Lab day.

Because of the difficulty of preparing fair and accurate tests, you cannot retake a quiz or exam if you miss it or do worse than you hoped. I will drop your lowest quiz score, so one 0 should not be a problem. If you need to skip an exam, you should schedule a make-up exam before the missed exam. I don't always give make-up exams, even if students ask in advance. Please don't schedule airline tickets on a class day!

Grade Scale

I use the official MSOE grading scale:

≥93% ≥89% ≥85% ≥81% ≥77% ≥74% ≥70% <70%
A AB B BC C CD D F

In final grading, I may award a grade higher than the grade scale if I feel it is more accurate than what the "raw numbers" produce.

Integrity

Your integrity is your most valuable academic possession, significantly more valuable than passing a class or getting a high GPA.

Integrity is essentially honesty -- ensuring that everything that it appears you have done or know is true.

It is possible to accidentally give the impression that work is yours, or to accidentally see something on someone else's exam. If something like this happens to you, please let me know. And generally speaking, please do your best to avoid this. Be on the watch! We are very good at fooling ourselves; we can even not "know" that we are cheating when we are!

Because of the importance of maintaining academic integrity, I will report apparent academic dishonesty to the Vice President of Academic Affairs. If this occurs, you will get a copy of the report.

Fine Print

1In rare cases, I may need to reschedule an office hour. I will try to both announce this in class at least a day in advance and email the whole class.

Last modified: Monday, 05-Aug-2013 16:08:01 CDT