Course Overview

This special topics course and (for some) senior seminar will allow students to explore issues in designing and writing mobile applications. Topics will include the software development process, memory management, user interface design, user interface building, input methods, data handling, connecting to databases, app development (for iOS and Android), and possibly other specifics such as GPS and motion sensing, and security issues related to mobile device software.

This course will have both conceptual and hands-on components. Students will research and present various topics, install and work with real-world projects, and document and reflect on their learning and their software development progress throughout the course.

Seniors taking the course as a senior seminar will play a greater leadership role in the design and execution of the course. (See the senior seminar description for details.)


Logistics:

Prerequisite:   Data Structures. Students must have senior standing to take COMP490.

Instructor:  

Objectives:

The objectives of this course are to help you:

  1. Further develop software development skills (programming & teamwork),
  2. Develop familiarity with some of the tools and techniques used in developing mobile applications,
  3. Explore design issues involved in mobile applications,
  4. Develop and apply professional life-long learning skills. You will:
    • Learn a new realm of programming on your own or in a group using professional resources,
    • Research unfamiliar topics and give presentations on them to the class,
    • Provide analytical, summary, and reflective statements documenting software development progress and knowledge you have acquired of new topics.

Readings:  

Books and resources will be identified throughout the quarter and collected in a growing class bibliography on the Teams site for this class.


Senior Seminar

Each year the Computer Science department offers a senior seminar focusing on team-based project development within a specific context (e.g., mobile, web, or open source software development). This year we will study the impact, in terms of positve and negative constributions, of computer science to the climate and environmental justice. In addition to collaborating on a specific project, students present material on a wide range of topics, including software engineering methodologies, web development, professional ethics, and current trends in languages and software development tools.

As a senior seminar, the course has a strong problem-solving focus, encourages student participation and leadership, develops their communication skills, and stresses integration of the student's full undergraduate experience.

Student Agency

Students play a very strong leadership role in this class, including presentation of course material, gathering information about the course project(s), influencing the direction and progress of the project(s), and working collaboratively to achieve an outcome.

Presentations

Students present a significant percentage of the material covered in class, on topics such as traditional and agile software development methods, design patterns, database concepts, web-based development languages and tools, version control, testing tools and techniques, open source practices, current trends, and professional ethics. These presentations involve reading, analyzing, synthesizing, and communicating information from books, articles, and online sources representing the (primarily professional) literature of project development in computing and mobile development.

Projects

Each year the instructor chooses a topic and one or more possible project ideas. Within the constraints imposed by those initial decisions, student decisions within the class may affect the choice of project, development language, or design methodology, and students always lead the requirements gathering phase and project design for the project implementation.

Communication Skills

Students employ and further develop their communication skills through formal class presentations, working with a community representative to develop project requirements, teamwork throughout the quarter as part of project implementation, presenting weekly oral status reports, developing internal and external documentation for their project, and writing reflective papers on the process of project development, the responsibilities of computer scientists, and the ways in which this course integrated their undergraduate experiences inside and outside the major.

Integration

The project and presentations that make up this course require students to draw on the skills and techniques they have acquired throughout their undergraduate career, not only from courses in the major, but often also from their study of other fields, internships, SIPs, and other outside activities. In addition, the course gives students a structured environment in which to practice and reflect on the critical life-long learning skills on which computer scientists depend, including learning new languages, methodologies, and frameworks. Thus, this course encourages integration of the student’s past, present, and future, applying previous experiences to a current project that models future professional or research environments.


Topics:

  • Mobile development tools:
    • User interface design
    • User input, menus, widgets
    • Storing and retrieving data - locally and with a server
    • Databases
    • Native vs. cross-platform apps
  • General software development topics:
    • Major development approaches ("agile" and "rigid")
    • Testing and refactoring
    • Database Concepts
    • Usability, user stories, use cases
    • Version control
    • Teamwork (roles, tasks, team dynamics, team management)
    • Good citizenship, standards, expectations, ethical & professional standards
  • Additional topics as driven by student interest


Activities and Assessment:

Students will engage in a number of activities, including research and reading outside of class, presenting concepts in class, providing feedback on others' presentations, participating in class discussions, engaging in projects, and reflecting on one's own progress and growth.

Individual tasks or assignments will be graded on the following scale:

  • Exceeds Expectations 5pts.
  • Meets Expectations 4pts. (A)
  • Near Expectations 3pts. (B)
  • Below Expectations 2pts. (C)
  • Poor Effort 1pt. (D)
  • Not Done 0pts. (F)

Individual grades will be combined and weighted as follows:

  • Topic and concept assessments 10%
  • Individual growth as evidenced through reflections, project contributions & leadership 45%
  • Contributions to the class via presentations, audience reflective responses, class discussions, and more 45%

Attendance and Participation:

Since this class will be highly participatory and collaborative, regular attendance and fully engaged participation is crucial to everyone's learning and will weigh heavily in your grade. Please be sure to talk to me in advance if you must miss any class meetings. Active participation in the class means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up. Student presentations in this course will be as important as presentations by the instructor; you should obviously prepare for your own presentations carefully, but you should also attend to your classmates' presentations thoughtfully and actively.

Meeting deadlines will also be very important -- in a collaborative setting such as this class, it is essential that you be ready with presentations and complete software development assignments in a timely fashion. Programming projects, in particular, are time-consuming and difficult to predict, but time-management skills are as critical in industry as they are in college.

To create an inclusive and supportive learning environment in which everyone can participate fully, this class has adapted a set of Community Guidelines adapted from the Center for Research on Learning and Teaching (CRLT) at the University of Michigan.

Collaboration and the Honor System:

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Software development projects: Most of the software development in this class will be highly collaborative. working effectively as a team will be an important component. Your responsibilities under the Honor Code include contributing to the team in all ways, documenting everyone who worked on any piece of code, and acknowledging all help you and your team receive from any source, including books, articles, websites, classmates, your instructor, etc. Discussing group assignments with members of other teams is allowed in this class. I may occasionally ask all the members of a group to evaluate the effort and effectiveness of their own work and that of others in the group; anyone who feels that they are being put at a disadvantage because of lack of engagement of someone else in their group should talk to me about it.

Class presentations should represent your own analysis and synthesis of ideas drawn from one or more sources. Your presentation should indicate clearly the source(s) you used or about which you are reporting. You may work on presentations collaboratively or individually, depending on the topic. Be sure to discuss any proposed collaborations with me in advance.

Individual work: Formal topic/concept assessments, presentation reflective responses, and personal growth reflections will all be individual efforts.