TuTh 3:30pm - 4:45pm, W228 CB.
Office hours: Wed 2pm-3:30pm, Thu 5pm-6pm, and by appointment.
mauricio-monsalve + @ + uiowa.edu
Office hours, in 301 MLH: Mon 4pm-5pm, Tue 1pm-2pm, Wed 5pm-6pm
Prof. Alberto Segre
alberto-segre + @ + uiowa.edu
CS:2230 (22C:021) or equivalent.
The goal of this course is to educate students on how to develop large software systems using objected-oriented analysis, design, programming and testing techniques building upon the basic competence students gained in CS:1210 (22c:016) and CS:2230 (22C:021).
Students are introduced to the basics of software engineering, with an emphasis on requirement analysis and system design, and use that knowledge in group projects to (partially) develop a software system of substantial size. The course also aims at developing professional-level programming competence further using the object-oriented paradigm and associated concepts of classes, objects, methods, inheritance, and polymorphism. However, it focuses more on the creation of large, multi-component programs using existing libraries for graphics, networking, databases, concurrency, and user interfaces.
The programming language of instruction will be Scala, a modern and advanced multi-paradigm language well-suited for this courses instructional goals.
Most of the information about the class, including handouts and assignments, will be available from the class web site:
We will also use Piazza, a class discussion service highly catered to getting students help fast and efficiently from classmates as well as the teaching staff:
Finally, we will use ICON for homework and grade posting and for homework submissions.
Students are expected to check both the class web site and the Piazza discussion board on a regular basis (at least every other day) for announcements regarding the course.
Textbook and Readings
The required textbook is
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd edition
by C. Larman.
Prentice Hall/Pearson, 2005.
available from local bookstores and from CourseSmart. A copy of this book is on reserve in the Engineering Library.
The recommended book for Scala is
Programming in Scala, Second Edition
by Martin Odersky, Lex Spoon, and Bill Venners.
available from local bookstores and in electronic format directly from the publisher. A copy of this book is on reserve in the Engineering Library. Other Scala textbooks can be used in alternative but the one above is strongly recommended.
Additional reading materials and handouts will be made available through the course web site.
Discussion Sections and Teaching Assistant
There are 2 discussion sections associated with the class, each lead our TA. You should attend the discussion section you have registered for.
You should think of the TA as the front-line for getting help in this course. He will have three office hours per week, spread through the week and held in the in CS computer lab in 301 MLH. He will also answer questions on Piazza or by email.
The discussion sections will complement the lectures in various ways and give you the chance to deepen your understanding of the material covered in the lectures. At the beginning of the semester, the TAs will spend time on Scala programming and using a couple of Scala IDEs. As the semester progresses, the discussion sections will provide specific guidance homework assignments and projects, additional exercises and examples, and so on.
Computer Accounts and Software
For this course, it will be helpful to use your account on the Lab machines because they will have a working installation of the software tools used in class. Instructions on how to access those machines, on-site or remotely, and use the installed software will be provided on the course website.
You are welcome to use your own computer for course work. However, you will be responsible for installing all the necessary software. We regret that will not be able to provide assistance for any problems with your own installation.
Pop quizzes will be given throughout the semester during the lecture and the discussion periods. They will last about 15 minutes.
A few individual homework assignments will be given during the course of the semester, covering the material from the textbook and the lectures. The assignment will be distributed and collected electronically through ICON.
There will be a course project, to be done in small teams. More information on them will be posted on the course website.
The instructor and the TAs will be glad to help with any questions you may have on the assignments. Please visit us often during our office hours and if necessary, outside our office hours as well. A more effective way to get feedback, however, will be to post your questions, publicly or anonymously, on Piazza.
There will be one final exam, held as per university schedule, and one midterm exam during class time in mid March. The exact date of the midterm will be announced on the course website later in the semester.
The weighting of items in grade determination will be the following:
The following cutoffs will be used to determine letter grades. In the ranges below, x stands for your total score at the end of the semester. Final scores near a cutoff will be individually considered for the next higher grade. Plus(+) and minus(-) grades will also be given; their cutoffs will be determined at the end of the semester.
|90 <= x < 100||A|
|75 <= x < 90||
|60 <= x < 75||C|
|40 <= x < 60||D|
|00 <= x < 40||F|
Grades are not curved in this course. It is theoretically possible for everyone in the class to get an A, or an F. Your final grade depends only on your own performance and not on that of others.
Academic Excellence and WorkloadThe University of Iowa expects students to set high academic standards for themselves and work hard towards achieving them (recall the Iowa Challenge). You can achieve true academic excellence only through dedicated work. An average workload of 8 hours a week besides class attendance should be considered the norm for this course. More effort might be needed depending on your background, predisposition and academic ambition.
Academic dishonesty will not be tolerated. In particular, under no circumstances should you pass off someone else's work as your own. This also applies to code or other material that you might find on the internet.
Sharing solutions of graded homework or copying someone else's work,
including posted solutions from previous editions of the course, is not allowed.
Doing that will result in a zero on the assignment
and a report to the CS department's chair and the college.
Students are allowed and encouraged to discuss with others concepts and ideas that relate to the class and the homework assignments. However, it is important to ensure that these discussions do not lead to the actual exchange of written material.
Exams: The midterm and final exams must be completed without any help from others. Exams showing strong similarities and/or duplication will receive a fail grade and the students involved will be reported to the Department and the College.
If you are unclear about what constitutes academic dishonesty it is your responsibility to contact the instructors or consult the CLAS policy (online version). Be aware that repeated academic dishonesty offenses lead to suspension or expulsion from the University.
Communicating with the Instructors
Students are strongly encouraged to post their class-related questions on Piazza (publicly or privately, as appropriate) rather than emailing questions to the teaching staff. Questions sent by email will receive lower priority. We will try to answer all questions, posted or emailed, by the end of the following day.
We will occasionally send email announcements to all students in the class. Recall that you are responsible for all official correspondence sent to your Hawkmail address (see General CLAS Policies on Electronic Communication below).
For one-on-one email communications, we will insist that we all start our e-mails with the recipient's name (as opposed to, say, "Hey" or just blank) and end our e-mails with the sender's name. As a matter of professionalism, please address the instructor as "Prof. Tinelli". Good manners dictate that you acknowledge the receipt of an email from us in response to an email request from you.
Assigned Readings: Students are expected to study all the material in each chapter covered in the readings, even if that material is not explicitly discussed in class or in the homeworks.
Optional Readings and Discussions: You are encouraged to consult material besides the required readings, including both reserve books and other on-line material, even if there is no directed outside reading assignment. You are also encouraged to discuss the course topics with their classmates. It is a genuinely helpful learning activity having to formulate one's own thoughts about the material well enough to express them to others.
Attendance: Students are expected to attend all classes. Your knowledge and therefore your grade depends on it. You are responsible for all announcements and material covered during class even if you did not attend.
Late Submissions: Late submissions will not be accepted. In general you will be better off turning in what you have on time rather than seeking extra time to complete your work. Starting early is crucial, especially to completing the programing assignments on time.
Extra Credit: No extra-credit assignments or tests will be given on an individual basis (although they maybe given to the whole class).
Make-up Exams: Make-up exams will be offered only if there is a serious, documented reason for not being able to attend a scheduled exam, as specified in the University's policy on "Excused Absences from Examinations".
Regrading: Students thinking a graded assignment or a test has been misgraded and deserves a regrading are invited to let the TAs or the instructor know. We welcome and will give full consideration to all well motivated regrading requests.
General CLAS Policies
The College of Liberal Arts and Sciences is the administrative home of this course. College-level policies governing this course can be found at