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
(prereq: none) 3 lecture hours 2 lab hours 4 credits (3-2-4)
- Josiah Yoder
- L344 (Library, 3rd floor)
- Office Hours
- See below
- ƖƐ96 ᔭᔭᔭ ϛ9ㄥ Google Voice; rings my office, cell-phone, and computer at the same time.
- Introduction to Programming with Java: A Problem Solving Approach, 2nd Ed., by Dean and Dean, McGraw-Hill, 2014, ISBN: 978-0-07-337606-6
On successful completion of this course, the student will be able to:
- 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
(These are the official EECS/MSOE outcomes for this class.)
You can learn by:
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 more.
I enjoy talking with you. Feel free to drop by my office or email me a time that you would like to meet. I will always be available in my office during office hours, even if I am working on something when you arrive.1.
(See Textbook in the basics table above.)
I desire to make the website as intuitive as possible. Please explore and share any suggestions with me.
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 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). 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. I recommend writing something in your notes everytime I write something on the board.
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 is ungraded this quarter, but you will probably find it to be essential to do some practice beyond the requirements.
One of the best ways to do homework is to answer all of the questions on the slides. We will use class-time to answer some questions, but I will leave others as "optional" exercises.
You may also want to ask and answer your own questions. For example:
- Why does this compiler error occur?
- Is it possible to _____?
- Can I combine _____ and ____ into a single program?
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
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. In every uploaded file, include your name, date, and the assignment name. 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. To get more than half credit for a lab, it should compile and run when I test it. 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).
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.
All assignments must be turned in by 4:30pm on Friday of Week 10 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.
This quarter, we will use the following to measure your learning:
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.
If the error goes beyond tallying points, discussing things in person is a great way to start to resolve an issue. I may ask you to send me an email if I think the case you are asking about requires careful consideration.
Please maintain your own records of your grades and check them against whatever summaries I send to you.
This quarter, half-exams will occur in-class, at the start of class, on Mondays in weeks 3, 5, 7, and 9.
Because of the difficulty of preparing fair and accurate tests, you cannot retake a half-exam or exam if you miss it or do worse than you hoped. 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.
I use the official MSOE grading scale:
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.
Your integrity is your most valuable academic possession, significantly more valuable than passing a class or getting a high GPA.
Academic integrity is essentially truthfulness -- ensuring that if it appears you have done or know something, you have.
It is possible to accidentally give the impression that work is yours. If something like this happens to you, please let me know as early as possible. It is better if you point it out than if I find it.
Be on the watch for violations of academic integrity, including:
- Receiving code from another student not on your team, even by looking at it.
- Giving code to another student not on your team, even by showing them.
- Looking at another student's work during a half-exam or exam.
Read MSOE's Policy on Student Integrity for more details.
When coding, you are encouraged to discuss strategies, but the implementations should be independent. Even discussing the details is not a good idea if it goes too far. If you want to show code, start up an independent program rather than showing an assignment -- and use a different application than the assignment at hand to demonstrate the concept you wish to share.
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.
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.