== Practical Introduction to Programming for Scientists == === Spring 2014 === ==== Mondays & Fridays, 9am - 10:30 N315 ==== == Important Instructions for Class Projects == If you believe you will need an exception to something below, please ask by next Friday (the final lecture !) For your class presentation, your first slide should have: * Your name (so other students who may not know you can vote for you) * Your department/program * Descriptive title of your project * You may wish to say something very briefly about your previous programming experience * We will be on a tight schedule, so I will have to enforce the 5 minute timeline pretty rigorously. Please practice in advance ! Please follow these instructions exactly: * Your class project MUST be submitted by 11:59 PM on Sat, Feb 22. No revisions will be accepted after this time. You can use Sunday to prepare your oral presentation :^) * Your submission should consist of: * one or more .py files (should have sufficient comments to figure out how they work) * any necessary additional files to demonstrate that the program works * A PDF file with a brief description of your program, what inputs the program takes, what outputs the program produces, and what it is supposed to do. * The final item in the PDF should be a command-line to use in running the program, and any necessary instructions to demonstrate that it works. * Combine all files into a .zip file named: Familyname_Givenname_project_2014.zip * Email sludtke@bcm.edu with the subject "Class project submission", and attach the .zip file Your grade will be a combination of your presentation and your submitted project, and will count for 1/2 of your grade. === Examples of past class projects === * Analysis of DNA capture targets that failed during sequencing * Calculating the probabilities of different discrete distributions * A Candidate Gene Searcher * Calculating dN/dS automatically from pairs of orthologs by pipelining clustal and paml * 96-well reader and calculator * PCR Annealing Temperature Calculator * One click identifier for PDF files * Scraping and processing microarray data from the lab webpage ---- Since some of you don't have Blackboard access, this Wiki page will host all class material, including: * Lecture notes * Screen-capture video of each lecture * Homework assignments ---- ||Lecture ||Notes ||Video ||Homework ||Extra Practice || ||1 - Introduction ||[[attachment:lecture_1.pdf||&do=get]]<
>[[attachment:terminal_1.txt||&do=get]] ||[[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture1.mov|Lecture Video]]|| 1. Fill out and email this form: [[mailto:sludtke%40bcm.edu?subject=I%20am%20attending%20GS-SB-406&body=Hi.%20I'm%20going%20to%20be%20attending%20your%20class%20this%20term.%0A%0AName%20(Last%2C%20First)%20%3A%0A%0AEmail%20%3A%0A%0APosition%20(Student%2C%20Postdoc%2C%20Faculty%2C%20Staff)%20%3A%0A%0AInstitution%20(BCM%2C%20Rice%2C%20UTHSC%2C%20MDA%2C%20...)%20%3A%0A%0AOne%20of%3A%0ATaking%20class%20for%20credit%0AFormally%20auditing%0AInformally%20auditing%0A%0ACurrent%20level%20of%20programming%20experience%3A%0A%0AWhat%20you%20hope%20to%20get%20out%20of%20the%20class%20(briefly)%3A%0A%0AI%20would%20appreciate%20it%20if%20you%20could%20include%20a%20JPG%20attachment%20with%20a%20photo%20of%20your%20face%2C%20so%20I%20can%20make%20an%20attempt%20to%20learn%20names%20(though%20I%20may%20fail%20miserably).%20|Click Me]] <
>2. Get Python working on your computer || || ||2 - Program Flow ||[[attachment:lecture_2.pdf||&do=get]]<
>[[attachment:terminal_2.txt||&do=get]] ||[[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture2.mov|Lecture Video]] || [[attachment:homework_2.pdf||&do=get]] || [[attachment:Data_Types.pdf||&do=get]] - Data type reference pages !<
>[[attachment:extra_practice2.pdf||&do=get]] || ||3 - Writing Programs ||[[attachment:lecture_3.pdf||&do=get]] ||[[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture3.mov|Lecture Video]] || [[attachment:homework_3.pdf||&do=get]]<
>[[attachment:translate.py]] || [[attachment:extra_practice3.pdf||&do=get]] || ||4 - Standard Libraries and Biopython||[[attachment:lecture_4.pdf||&do=get]] ||[[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture4.mov|Lecture Video]] || [[attachment:homework_4.pdf||&do=get]]|| [[attachment:extra_practice4.pdf||&do=get]] || ||5 - Numerical Computing, NumPy & SciPy||[[attachment:lecture_5.pdf||&do=get]] ||[[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture5.mov|Lecture Video]] || [[attachment:homework_5.pdf||&do=get]]<
>[[attachment:ctfplot.csv||&do=get]]<
>[[attachment:singleplot.csv||&do=get]]|| [[attachment:extra_practice5.pdf||&do=get]] || ||6 - Debugging and Profiling||[[attachment:lecture_6.pdf||&do=get]] ||[[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture6.mov|Lecture Video]] || [[attachment:homework_6.pdf||&do=get]]<
>[[attachment:histdata1.txt||&do=get]]<
>[[attachment:histdata2.txt||&do=get]]|| || ||7 - WWW, XML and Networking||[[attachment:lecture_7.pdf||&do=get]]<
>[[attachment:terminal_7.txt||&do=get]] ||[[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture7.mov|Lecture Video]] || [[attachment:homework_7.pdf||&do=get]]|| || ||8 - Simple GUI programming||[[attachment:lecture_8.pdf||&do=get]] ||[[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture8.mov|Lecture Video]] || [[attachment:homework_8.pdf||&do=get]]|| || ||9 - Image Processing & Data Persistence||[[attachment:lecture_9.pdf||&do=get]] || [[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture9.mov|Lecture Video]] || || || ||10 - Regular Expressions, Parsing, Javascript||[[attachment:lecture_10.pdf||&do=get]] || [[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture10.mov|Lecture Video]] || [[attachment:ecoli_k12.txt||&do=get]] || || ||11 - OOP & Databases||[[attachment:lecture_11.pdf||&do=get]] || [[http://blake.grid.bcm.edu/dl/intro_programming_14/lecture11.mov|Lecture Video]] || || || ---- '''Introduction to programming book draft''' - [[attachment:Ludtke_book_draft_2014_01.pdf||&do=get]] I'm making the entire current text of my book draft available to those in the class. It is very far from complete. Since this website is publicly accessible, and I do intend to eventually finish the book, it is password protected. I provided the password in-class, and I ask that you not circulate it outside the class. Thanks. '''Auditors are welcome''', but if possible (all students, and some others) please formally audit the class, rather than just showing up. 1) this means you have at least a small commitment to actually attend and 2) if you don't formally audit, the GS has no record of your interest and they may give me a very small room to teach in next time. '''Homework will be assigned each class''', at least for the first 2/3 of the term, and is due via email to sludtke@bcm.edu , '''before''' the beginning of the following lecture. We will go over solutions to each homework assignment in-class. Since the class is offered for credit, homework will be graded, but on a very lenient scale: 1. Homework turned in, something attempted, but not functional 1. A good effort, but with major flaws 1. Largely correct solution, but with some flaws 1. Program does what it should, with minimal flaws This class attracts people with widely varying backgrounds and skill levels. Since the course is supposed to be accessible to people with little to no programming experience, the bar for achieving an acceptable grade (B) in the class is set fairly low. If you make a reasonable attempt at all of the homework assignments, even if not completely successful, and complete a class project of some sort, you can expect to get at least a B in the class. This does not mean you can slip through without making an effort at all. Particularly if you have no programming experience at all, the class WILL take a significant effort on your part. Those who don't make a reasonable attempt at virtually every assignment may not achieve a B. Turning in something incomplete is better than turning in nothing. '''There will be a class project in lieu of a final exam.''' Each person will, over the course of the term, write a program, and briefly present it at a special class at the end of the term. The sole requirements for the program are: 1) it must do something useful not easily completed with existing tools 2) not be completely trivial. ----