Scientific Programming

This is the web page of two courses:

  • 145540 Scientific Programming (12 cre­di­ts), listed in the Manifesto of the Master Degree in Quantitative and Computational Biology. Composed of Part A + Part B
  • 145912 Scientific Programming (6 cre­di­ts), listed in the Manifesto of the Master Degree in Mathematics. Composed of Part A only.

Part A — Python programming and scientific libraries

Computer pro­ces­sing is a key com­po­nent of modern data ana­ly­sis pipe­li­nes, and plays an increa­sin­gly impor­tant role in many fields of scien­ce. The goal of the fir­st modu­le cour­se is to intro­du­ce the Python pro­gram­ming lan­gua­ge, one of the most wide­ly used scien­ti­fic com­pu­ting lan­gua­ges, and to a col­lec­tion of libra­ries that can be used to ana­ly­ze data.

At the end of the modu­le, stu­den­ts are expec­ted to:

  • Remember the syn­tax and seman­tics of the Python language;
  • Understand pro­grams writ­ten by others individuals;
  • Analyze a sim­ple data ana­ly­sis task and refor­mu­la­te it as a pro­gram­ming problem;
  • Evaluate which fea­tu­res of the lan­gua­ge (and rela­ted scien­ti­fic libra­ries) can be used to sol­ve the task;
  • Construct a Python pro­gram that appro­pria­te­ly sol­ves the task;
  • Evaluate the resul­ts of the program.

Part  B — Algorithms and data structures

Algorithmics is the scien­ce of algo­ri­thms. It inclu­des algo­ri­thm desi­gn, the art of buil­ding a pro­ce­du­re which can sol­ve cor­rec­tly and effi­cien­tly a pro­blem; and algo­ri­thm ana­ly­sis, the scien­ce of quan­ti­fy­ing the amount of resour­ces nee­ded by an algo­ri­thm to sol­ve a problem.

The goal of this modu­le is to intro­du­ce stu­den­ts to the desi­gn and ana­ly­sis of algo­ri­th­mic solu­tions, throu­gh the pre­sen­ta­tion of the most impor­tant class of algo­ri­thms and the eva­lua­tion of their performance.

At the end of the modu­le, stu­den­ts are expec­ted to:

  • eva­lua­te algo­ri­th­mic choi­ces and select the ones that best suit their problems;
  • ana­ly­ze the com­ple­xi­ty of exi­sting algo­ri­thms and algo­ri­thms crea­ted on their own;
  • desi­gn sim­ple algo­ri­th­mic solu­tions to sol­ve basic problems.