Lex Project
Effective Software

Welcome to the Lex Project.

Lex is dedicated to promoting and teaching effective software engineering. You will find resources for learning the tools of software engineering, particularly focused on scientific and engineering software, C++ and Agile methodologies. Content starts with assuming some basic programming knowledge, typically what would be covered in the first year of a college computer science program. While the content here is particularly focused on software for science, engineering and other technical fields, it can be valuable to anyone who wants to learn effective software engineering for specialized fields where deep domain knowledge is required.

Agile for CSE

Agile methodologies focus on delivering incremental value to the customer iteratively tuning the time, resources and scope to assure progress. Agile methodologies have shown considerable value for research (science) and design (engineering) projects where precise requirements emerge as product development evolves.

C++

While Fortran is often considered the core language of scientific and engineering computing, C++ provides nearly equivalent performance advantages (if properly coded) and tremendous programmability advantanges. In addition, C++ standards are evolving to address modern parallel programming needs, and compile-time polymorphism via template meta-programming techniques provide truly unique capabilities for generic programming that retains execution-time performance.

Resources

Lex provides the following instruction modules:

Authors and Contributors

This site is developed and maintained by Michael Heroux @maherou with assistance from Duong Do @duongdo27 and Jim Willenbring @jwillenbring.

Its content is used as part of a Computer Science capstone course in research methodologies at the College of St. Benedict and St. John's University in rural Collegeville, Minnesota.