At 2-0 through the first three weeks of the season, the Boilermakers felt they were sitting in a good place in the Big Ten West.

But it all went south starting with a loss to Northwestern on Nov. 14. After that, Purdue seemed to get progressively worse, losing a heartbreaker at Minnesota the next week — a bad call didn’t help matters — before backsliding more against Rutgers and Nebraska. Arguably, Purdue had chances to win each of its four losses, had only it made an extra play here or there. But the consistent inability to do so is a sign of a team that isn’t yet ready to win.

Purdue finished only 2-4 in Jeff Brohm’s fourth season. Immediately afterward, he announced that co-defensive coordinator Bob Diaco wouldn’t return, after the high-profile assistant spent only six games in West Lafayette. Greg Brown, a second-year cornerbacks coach, also was not retained.

It’ll be a big offseason.

But before then, let’s review. Here are positional grades for the Boilermakers in 2020.

Quarterbacks: B

Although Purdue split its quarterback snaps, the position wasn’t a reason why the Boilermakers finished below .500.

Far from it.

Junior Aidan O’Connell, who started the first three games of the season before a foot injury sidelined him, and sophomore Jack Plummer combined to pass for 1,854 yards with 15 touchdowns and 4 interceptions, and they completed 67.4 percent of their passes.

The two were approximately a statistical dead heat, with Plummer slightly better in completion percentage (71.0 to 64.7) with 22 more yards and 1 more touchdown. Yet O’Connell was 2-1 as a starter, and he played the third start, a loss to Northwestern, with the injury, while Plummer was 0-3. The duo helped Purdue to the Big Ten’s best passing offense, by far, averaging 309 yards per game, 45 yards better than No. 2 Maryland.

Although they aren’t complete products — O’Connell could stand to have better pocket awareness and be able to scramble for yardage, while Plummer’s arm strength can at times be a concern — Purdue can win with either under center.

Running backs: D

Zander Horvath turned in a solid season as Purdue’s primary running back, going for 442 yards in 6 games, averaging 5 yards a carry with a couple touchdowns.

If we were grading individual players, he might get high marks, particularly when adding in his production as a pass-catcher (30 receptions for 304 yards). But this grade is about the running back room, and outside of Horvath, Purdue had next-to-zero production.

Heck, a second running back didn’t even get a carry until the third game of the year, as former starter King Doerue was recovering from a preseason injury and missed the first couple games. But that Brohm didn’t trust another running back on the roster is alarming, to say the least.

Doerue returned the last four games to get 17 carries for 74 yards, at times showing a burst that Purdue otherwise lacked. But as for running backs, that was it. Not even remotely enough productivity. Purdue was dead last in the Big Ten in rushing, averaging 81.5 yards per game.

In Brohm’s offense, the Boilermakers might never finish in the upper half of the Big Ten in rushing, but there must exist a threat, to keep defenses honest. Purdue, though, didn’t have that often enough, nor did it regularly convert on 3rd-and-short.

Receivers: A-

For the last three games of the season, the Boilermakers finally had their receiver duo of David Bell and Rondale Moore on the field together.

Was it as dynamic as had been anticipated? Not really.

The two were great, but Purdue’s offense didn’t explode as had been hoped. Moore, who had missed the last year with a hamstring injury, showed flashes of his former brilliance, but didn’t exhibit the mind-blowing big plays he had previously. Probably a matter of rust. In his last season at Purdue, he had 35 receptions in three games, but for only 270 yards, and he didn’t score.

Bell was a magician. The sophomore is just unbelievable in his ability to make catches, both the routine and the spectacular. His one-handed grab to seal the win vs. Illinois was only one of a handful of such catches, and he had a few that didn’t count (being out of bounds, etc.) that would have been impossible for others.

Sophomore Milton Wright was a good complementary player, first as the No. 2 with Bell then as the third option with Bell and Moore. He was consistent in catching, hauling in 24 receptions for 305 and two scores.

Purdue has other young receivers, like Maliq Carr and T.J. Sheffield, who got only limited opportunities in the short season.

Tight ends: B

Starter Payne Durham was known more for a catch that didn’t count this season than all the ones that did.

The sophomore was called for an offensive pass interference, as lame a call as you’ll see, vs. Minnesota, costing the Boilermakers a late go-ahead touchdown and likely costing them a win. (And how different would a 3-3 season feel than a 2-4?)

But otherwise Durham was solid. The 6-5, 255-pounder isn’t going to wow with his athleticism or straight-away speed, but he’s a big target with great hands, and he’s becoming a more solid blocker also. He had 16 catches for 166 yards with 3 scores.

Purdue has a couple young tight ends that it really likes, with redshirt freshman Garrett Miller getting a majority of the backup snaps. He had a couple of catches, the biggest being a backside-leak 40-yard touchdown on a 4th-and-short against Northwestern.

Offensive line: B

Perhaps one of the bigger surprises, and maybe the only positive surprise, was the consistent play of the offensive line, even while absorbing injuries early in the season.

The Boilermakers have good, young linemen, particularly at the inside positions. Purdue played four redshirt freshmen or freshmen linemen: Gus Hartwig, Spencer Holstege, Cam Craig and Kyle Jornigan.

Hartwig, a true freshman, was particularly impressive, given he played right away and at multiple positions, filling in at guard and center. The other three rotated in at the guard spots. Craig, unfortunately, was hurt early in the season, sidelining him for a majority of the year after he had won the left guard starting spot in camp.

Purdue brought in graduate transfer Greg Long, from UTEP, to play right away, and he solidified the question mark at right tackle. It’s possible that he’ll opt to stay an extra season, considering it could better position him for an NFL chance. Grant Hermanns, a multiyear starter at left tackle, had another steady, solid season, as one would expect after watching him the last several years.

Purdue gave up 12 sacks in six games, a rate that put it in about in the middle of the pack in the Big Ten.

Defensive line: D

Purdue’s best lineman, who is also its best defensive player, was only healthy for about a game-and-a-half, as George Karlaftis first suffered an ankle injury that limited him in the first half of the season. Then, about the time he might have started feeling better again, he tested positive for COVID, putting him out the balance of the year.

And yet still, despite having played in only three games and only half of that while healthy, he led the Boilermakers in sacks, with 2.

With Diaco calling the defensive plays, the scheme made little sense, given Purdue’s personnel. And the Boilermakers played coverages, and rarely got pressure, almost never with a three-man front and rarely even when they blitzed.

Players had moments: Lorenzo Neal, who was back after missing all of 2019, came up with a few plays in late-game moments when Purdue needed a stop. DeMarcus Mitchell, who was a hybrid linebacker/D-end, was great near the line of scrimmage. He should be playing there, giving the Boilermakers bookend ends who can change plays.

But a few plays here or there isn’t anywhere near good enough.

Linebackers: C-

Derrick Barnes was a revelation at linebacker.

The senior had started his career at the position, but struggled with the nuance of playing in space, getting lost in coverage and being slow to react. Purdue moved him to D-end in ’19 and he flourished — he had 8.5 sacks — so the move back to linebacker as part of Purdue’s 3-4 in 2020 came with skepticism.

He erased that quickly. In his final season, the 6-1, 245-pounder led the Boilermakers with 54 tackles, 5.5 for loss and had a pick. He was the heart of Purdue’s defense, playing fast and aggressive, and he probably earned himself at least a chance in the NFL.

But otherwise, Purdue’s linebacker corps was inconsistent. Mitchell played the hybrid position, and will have a home under the new scheme next season, probably on the line of scrimmage. He had 6 TFLs and a sack.

Junior Jaylan Alexander was steady on the inside, although perhaps not flashy. And Jalen Graham, playing on the outside, too often was in the shadows, although in only his first season moving down from safety perhaps some bumps are to be expected.

In a 3-4, as Diaco was trying to run, the linebackers must be play-makers, but outside of Barnes Purdue didn’t get much done.

Secondary: D

It was an unmemorable year for the secondary.

I mean really, name something a defensive back did to change a game. OK, here’s one: Marvin Grant forced a turnover that Graham picked up for a touchdown vs. Illinois.

Another?

Point being that the Boilermakers lacked playmaking in 2020, a reason why Brown was not retained following the season. Purdue has tried to throw numbers at the issue, bringing in J.C. transfer Geovante Howard and Iowa transfer D.J. Johnson in the offseason to add depth at corner. While both played, neither was able to earn a starting role. Johnson opted out late in the season, while Howard has entered the transfer portal.

The Boilermakers seemingly have young players with potential, including Cory Trice at cornerback and Grant and Cam Allen at safety. Allen, a sophomore, had a couple interceptions with 27 tackles.

Safety Brennan Thieneman, Purdue’s fourth-leading tackler with 33, could decide to return for a second senior season.

Special teams: D-

Meh.

Purdue struggled in almost every facet of special teams, but perhaps the most glaring was the Boilermakers inability to punt consistently. The Boilermakers used three punters, after Brooks Cormier, who has a big leg but is woefully inconsistent, failed to lock down the job. Backup Zac Collins punted as well, and Purdue turned to No. 3 Brendan Cropsey, after he won a weeklong competition, but his first attempt was blocked. Even QB Jack Plummer punted twice.

The Boilermakers’ coverage was marginal, and it gave up a game-changing 100-yard kick return vs. Rutgers. And the return game didn’t amount to much of significance.

Senior J.D. Dellinger was fine as the place-kicker, but his 2 misses vs. Minnesota were costly. They were his only 2 misses of the season in 9 attempts.

With Marty Biagi, Purdue has its fourth special teams coordinator in four seasons. Will he stick around another year?