Skip to content

Programming in Python and Fundamentals of Software Development - Summer 2017

License

Notifications You must be signed in to change notification settings

prof-rossetti/nyu-info-2335-201706

Repository files navigation

INFO-GB.2335.70 - Programming in Python and Fundamentals of Software Development

This repository contains resources for instructing a graduate business school course on programming and software development.

University School Department Term Course Section Credits
New York University (NYU) Stern School of Business Department of Information, Operations, and Management Sciences (IOMS) - Information Systems (INFO) 2017 Summer Session II Programming In Python and Fundamentals of Software Development (GB.2335) Monday and Wednesday nights from 6pm to 9pm (70) 3

See the contributor's guide for instructions on how to add or revise repository content.

Bookmark-worthy Links:

Description

This course represents an opportunity for students to learn how to code, regardless of whether or not they possess prior programming experience. The Python programming language will be introduced with a progression of concepts from basic to intermediate. Students will then design and implement practical applications of the Python programming language ranging from basic scripts to intermediate programs. Throughout the semester, students will be immersed in contemporary software development practices and should emerge with marketable technology-related knowledge and skills. Prerequisites: N/A.

Scope

  • The Role of Application Software in Business and Organizations
  • Software Development Tools, Practices, and Methodologies
  • Programming Languages and Frameworks, with focus on Python

Objectives

  1. Become proficient in writing, debugging, testing, and executing Python scripts.
  2. Describe the ecosystem of tools and technologies used to plan, develop, and maintain computer-based information systems.
  3. Participate in all phases of the systems development lifecycle, and describe the difference between traditional "waterfall" and agile methodologies.
  4. Discuss security and privacy considerations relevant in designing and managing computer-based information systems.
  5. Describe the differences between functional and object-oriented programming.
  6. Participate in, and describe the advantages and disadvantages of software version control.
  7. Participate in, and describe the advantages and disadvantages of open source software.
  8. Participate in, and describe the advantages and disadvantages of test-driven development.
  9. Gain marketable programming skills and build an online portfolio consisting of multiple programming projects.
  10. Network with industry professionals.
  11. Have fun!

Learning Community

The maximum enrollment for this section is 50 students. Enrolled students represent a variety of graduate programs of study, however as of the first day of class, roughly 75% are in the Stern School of Business.

A pie chart showing 72% of enrolled students are in the Stern School of Business.

Michael Rossetti (LinkedIn, GitHub) will be administering the course and teaching all course material. If you have a question about assignments, projects, or anything covered in class, send a direct message to @prof-rossetti on Slack or email him at [email protected]. The professor aims to provide an average Slack response time of 1-2 business days and an average email response time of 3-4 business days. If emailing the professor, please use your university-issued email address. If requesting a LinkedIn connection, the professor usually waits to accept them until the end of the semester.

Mike Zhu (Github) will be providing instructional assistance as the course's Teaching Fellow (TF). To contact him, send a direct message to @mz909 on Slack or email him at [email protected].

Learning Activities

Student performance will be evaluated by assignments, projects, and a final exam. All assignments and projects are due before 11:59pm on the due date specified, unless otherwise noted. The final exam will be held on the last day of class. See the Activities page for up-to-date information about the due-dates and weights of all learning activities.

Materials

Texts

No textbook is required to accompany this course, however students will be expected to read significant quantities of online documentation from a variety of sources.

Some helpful Python resources include:

For perspective on contemporary software development attitudes, students may optionally read the following book:

  • Rework, by David Heinemeier Hansson and Jason Fried

Computers

Each student should have access to a personal computer during class.

The computer should allow installation of Python, third-party packages, and other software such as a text editor. It should have enough processing power to run all these programs, thus netbooks, tablets, and two-in-ones may prove problematic. Both Mac and Windows operating systems should provide a suitable development environment. Students with Windows computers may face additional and/or alternate instructions.

Any student who doesn't own a personal computer may inquire about loaning a laptop from the library.

Computer Software

NOTE: Please do not install until instructed to do so by the professor!

Text Editor

Each student is expected to achieve proficiency using a text editor of choice. Ideally, the text editor should include syntax auto-completion functionality for the Python language. The official text editor for this course is Atom, however Sublime and Notepad++ are potential alternatives.

NOTE: If you're using Atom, you should be able to download third-party packages which provide additional functionality. Do so from the "Settings > Install" menu and see installed packages from the "Settings > Packages" menu. One recommended package to install is called "Sublime-Style-Column-Selection"; this package enables vertical text selection:

a screencast depicting usage of a text editor in which the user selects a vertical column segment of the text, and is able to write content on multiple lines simultaneously

Git Client

Each student is expected to achieve proficiency using a Git client of choice. By the end of the semester, students should strive to be interfacing with Git via the Git command-line utility, however students originally unfamiliar with Git may optionally start by using a Git GUI Application like GitHub Desktop and slowly transition to the Git command-line utility.

Python

Each student is expected to achieve proficiency running Python scripts via the Python command-line utility and managing Python packages using the Pip command-line utility.

Operations

Collaboration (GitHub)

All course materials exist in the course GitHub repository. Over the course of the semester, students will be expected to submit assignments and projects using a personal GitHub account. Any student who would like to keep these academic activities private may use an anonymous GitHub account not associated with his or her identity.

FYI: Student GitHub usernames are expected to differ from NYU-related usernames.

Students should expect to view the course materials online, and may "clone" or download the repository on a periodic basis to access course materials offline.

Additionally, to submit assignments and projects over the course of the semester, students will be expected to "fork" the repository, keep their forks up-to-date, and submit "pull requests" as instructed by the professor.

Communication (Slack)

All students should join the course Slack team at the beginning of the semester when invited by the professor. All course communications will be directed to members of the #2335 channel. Students may optionally join the #2335-dev channel to subscribe to a feed of updates to this course repository. The professor may create additional channels to serve assignment-specific purposes or facilitate affinity group communications.

REFERENCE: Emoji Cheatsheet 😃

NYU Stern MediaSite

Audio-visual class recordings are accessible in real-time and on-demand through NYU Stern's MediaSite platform. Links to these videos are also posted to the #mediasite channel on Slack.

Non-Stern students should be able to access the MediaSite recordings after activating their Stern accounts at start.stern.nyu.edu. Any students having issues either activating their Stern accounts or accessing MediaSite recordings should contact the Stern Help Desk at [email protected].

Calendar

The Calendar provides a high-level overview of the dates and times when this class meets. It reflects the most up-to-date course scheduling information, including class times, instructor office hours, holidays, and more.

Schedule

The Schedule lists specific topics and technologies in focus during each class. The schedule is tentative and may change to reflect actual pace of instruction. In the event of a schedule change, the professor will send an announcement via NYU Classes. See the Announcements directory for copies of those announcements.

Policies

All members of the learning community agree to abide by the Policies described herein.