Skip to content
This repository has been archived by the owner on Jul 4, 2023. It is now read-only.

Latest commit

 

History

History
213 lines (165 loc) · 11.4 KB

README.md

File metadata and controls

213 lines (165 loc) · 11.4 KB

Screenshot

Maintainable and Scalable Systems through Collaboration, VCS, and Open Source Software (CS 491/591) Making Apps

The class syllabus lives here. Make sure to watch this repository so you can be notified if things change. You can click the little eye at the top of the page to change your settings so you receive email notifications if things change. This class is highly experimental in its techniques and class structure, but is actually very modern in its approach to using the current and respected tools of the day for efficient and maintainable software engineering practices. Below you will find the meta about the class as well as a tentative schedule of assignments and tests. Happy Coding!

Where: AIME 111 When: Tuesdays 2:30-4:30 PM

Table of Contents

Class Structure

The bulk of this class will be entirely run on the GitHub platform. GitHub is a social coding tool that emphasizes Open Source and creative collaboration. GitHub is built entirely off of the Git distributed version control platform. Git is used in development teams around the world for maintaining code bases in an extremely efficient manner, as well as being a tool for pushing code to production servers and maintaining a record of pushes to track down and eliminate bugs before they become a problem.

Get a GitHub Account!

First things first - you have to have a GitHub account. No account, no grade. You can create a free account by clicking the sign up button in the top-right of the browser window. Don't read any further until you have created your account.

About the Assignments

Each assignment will be a separate repository inside of the UH-300-021 organization, and those links can be found in each Assignment section in this Syllabus as they are posted. Assignments in this class aren't your typical CS assignment; each one is created, maintained and graded through GitHub. Each assignment contains a README.md file in the top-level directory of the repository which contains all of the information about the assignment, the rubric used to grade your assignment, and any instructions/tips necessary to complete the project. Below is the order of operations of beginning, working on, and completing an assignment.

Order of Operations

  • Fork the assignment
  • Create a new folder with your name in the top-level
  • Work on and complete the assignment inside your own Forked version of the repository
  • Once completed, open a Pull Request to merge your repository with the master class repository
  • Ace the assignment! (if you did well, of course)

Committing your Work

A commit is the process of saving the state of your work, which you can revert or look back onto any time you wish. This is very helpful for tracking bugs that started after a certain commit, where you can look at not only what files changed, but also what lines of code are different - a useful tool for efficiently tracking and eliminating bugs/design flaws in larger systems. For these assignments, you should commit often - and a commit log will be checked to see your creative process through the duration of the course, and to verify assignments were completed on time.

Forking Repositories

If you look up at the top of the page, you'll notice a button under your username that says "Fork." What a fork does is take the repository and port it over to your code base. You can make edits, change things and then commit - all without affecting the master repository you forked from. This enables you to do the assignment, until you're happy with the result and then you can make a Pull Request to "turn it in."

Pull Requests

A Pull Request is the process of merging the changes in your forked repository into the master repository. This works by finding differences in the files you forked and adding them in. A full history of your git commits is added into the master commit logs as well.

GitHub Issues

Issues are an auxilliary part of the GitHub platform; a separate tool built to be used in conjunction with Git. We are going to use Issues in this class to provide feedback on assignments, ask for help on assignments, and to show where in your commit history you were doing good things, or where things went wrong. This is an extremely helpful tool for collaboration as you will see in your group assignments in this class.

##Git and Github

####Why We Use VCS

  • changes, sharing, tracking, versioning

####VCS Options

  • CVCS:SVN,TFS DVCS:git,mercurial,bazaar

####Git Basics -dvcs,repositories,line change tracking, the origin

####Git Usage -push,pull,clone,commit

####More Git -ignore, branch/merge, gitflow, tagging, stashing

Gitflow

####Github Basics -registration,star,fork, watch, trending, gists, collaborators, readme/markdown,

##Android Dev

##Deploying Apps

####Apple Developer Site

https://developer.apple.com/

The developer site handles signing of apps and provisioning devices

####Itunes Connect

https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa

Itunes Connect handles deployment and app store analytics/management.

##Art and Design

A primer on art and design in apps and in general can be found in the Artsy Fartsy repository.

##Resources Below are a list of blogs and tutorials that you may find helpful in learning objective-c

Language

Platform

Also, StackOverflow is your best friend. Google "iphone sdk" then whatever your question is for best results.

More Advanced