Lecture#1
.pdfTrends are clear
Virtualization & Clouds
Hybrid computing
Big Data
Green computing
Trends are clear
General purpose hardware
Specialized software
Open data
Open source
Skilled software developers are required
Syllabus
Why this course?
Physicist with programming skills is better than just physicist
Put the landmarks
Software development is a learnable skill
Logistics
One lecture per week + a real-life example
Weekly assignments
Three projects
Numerous tutorials
Course virtual machine image
Block #1: Infrastructure
Computer architecture Linux OS
Amazon AWS
How it’s made. How to leverage good parts and avoid bad ones.
Block #2: Languages
Python C++ review
Java review: optional
How to choose right tool for the job.
Block #3: Tools & Workflow
Revision Control Systems: git, Github, BitBucket
Build automation: GNU make Documentation: Sphinx
Testing and Debugging: nose framework, pdb
How to be a good citizen in software development world.
Block #4: Software Design
Basic algorithms
Design patterns
How to create elegant and complex software architecture.
Block #5: Parallel software
Profiling and optimizations
Threads and OpenMP
MPI
CUDA
How to achieve performance.