Learning Objectives

CS153aj: Mobile Applications

At the end of the course the students should be able to:
  • understand the architecture of the internet and the structure of mobile/web applications
    • understand HTTP, HTML, CSS, TCP/IP, DNS, SSL, 
    • data use (local and remote DB, local/remote file systems, music, video)
  • understand fundamental android OS concepts and be able to use them comfortably
    • activities, intents
    • 2d/3d graphics
    • layouts and widgets
    • screen management
  • understand concepts underlying modern software testing, automation and development practices
    • unit testing, debugging, logging, etc.
  • think critically about user interface and user experience design
    • design principles, paper prototyping, usability testing
  • understand the unique concerns you need to consider when developing mobile apps, e.g
    • deployment, app stores etc
    • disconnected use
    • writing for multiple devices (tablets and phones ...)
    • version management
    • scaling. How to think about it.
    • security
    • internationalization
  • understand the Android development platform
    • eclipse, simulator, debugging, etc.
  • understand unique features of mobile platforms,
    •  gps, voice, accelerometers, multi-touch, cameras, speakers, microphones, compass, etc 
Skills to be developed:
  • learn to be a great programmer - coding, testing, class design, algorithms, debugging
  • write Android applications in Java that use the key architectural elements of the Android platform
  • use the Android/Eclipse development tools to design, implement, debug and test applications
  • create an Android User Interface
  • write Android apps that:
    • interact with a back end web server/service
    • use voice
    • use gps
    • have local data persistence
  • develop appropriate models using various database back ends
  • finding answers to technical questions using web newsgroups, screencasts, and resources.

CS153bj: Mobile Game Design

At the end of the course students should be able to:
  • understand the basic principles of what makes a good game
  • understand the software architecture underlying different types of games
    • Model/View/Controller
    • Game Engines
    • Physics Engines
    • Performance/Animation
  • describe a taxonomy of mobile games with examples
  • be able to discuss game mechanics
    • space, objects, attributes, chance
  • discuss the principles of game design
    • worlds, character, story, aesthetics, sound effects/music
  • understand the way game design concepts can be used in other applications
    • business, education, science
  • understand principles of 2D and 3D graphics
    • transformation matrices, state, lighting, shading, textures, keyframing, mesh deformation,
  • know the issues that arise in multi-player and networked games
Skills students will develop
  • learn to be a great programmer - coding, testing, class design, algorithms, debugging
  • able to create an interesting game on the Android platform
    • design and develop games in a collaborative work environment
    • game testing and user testing
  • comfortably use the 2D graphics API to create sprites, backgrounds, etc
    • high performance techniques
    • aesthetic design
  • ability to create 3D graphical worlds and avatars
  • ability to create multi-player and networked games
  • ability to interact with remote data (e.g. leader boards)
  • ability to critique (verbally and textually) games both as games and as software projects

CS154aj: The JBS Incubator

At the end of the course the students should be able to
  • understand the principles of agile methodology, concepts and reasoning behind them
    • stories
    • backlog
    • iteration/sprint
    • velocity
    • pair programming
    • continual integration
    • constant refactoring/automated testing
  • understand how to think about marketability, business model, money when it comes to creating a product
  • understand the difference between developing a toy program and a real application
  • connect the principles of mobile app and game development from the other two course to a real world product effort
Skills to be developed:
  • learn to be a great programmer - coding, testing, class design, algorithms, debugging
  • how to use agile principles for software engineering
  • develop a complete mobile product that has a networked component
  • user and usability testing/feedback
  • Use GIT, Pivotal Tracker, Android Development Kit, ...
  • having a working instance of a product at all times starting at the earliest possible moment in a project.
  • give clear and engaging oral presentations on the product
  • work in a professional software team: making and meeting commitments, asking and giving help to assure the success of the team, communicating well to each other and to 'management', and delivering on objectives
  • be highly resourceful in solving problems by taking advantage of all the resources of the web
  • describe and show what it took to select, design, develop, test and deploy a mobile product
  • build, test and launch an original product using everything you've learned in the course